I am trying to render a backbone collection on a template that is built with mustache.js . The problem is I couldn't get the cid of the model in the template. My code is
        <div class="phone span4">
            <h5> Phone Appointments</h5>
            {{ _.each(slots, function(slot) { }}
                {{ if(slot.aptType == "P"){ }}
                    <h6 cid="{{=slot.cid}}"  aptId="{{=slot.aptId}}"> {{=slot.beginTime}}  - {{=slot.endTime}} </h6>
                {{  }   }}
            {{  }); }}
        </div>
from the above code, I can get the aptId, beginTime and end Time, but not the Cid. How to get the Cid of the model from a collection while rendering it on a template?
and my render method from the view looks like this
    render:function(){
    var template = _.template($("#slot-display-template").html());
    compiledTmp = template({slots: this.collection.toJSON()})
    this.$el.append(compiledTmp);
    }
Also is there any disadvantage of using cid as the unique identifier of a model ?
Thanks in advance !!!
The cid is not included by default in the toJSON output. You will need to override toJSON in your model definition and include cid.
toJSON: function() {
  var json = Backbone.Model.prototype.toJSON.apply(this, arguments);
  json.cid = this.cid;
  return json;
}
If you need an ad hock solution, This would work also:
var params = _.extend({}, this.model.toJSON(), {cid: this.model.cid})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With