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