在模板上呈现主干集合时,无法获取模型的cid
cannot get the cid of the model while rendering a backbone collection over a template
我正试图在一个模板上渲染一个骨干集合,该模板是用mustache.js构建的。问题是我无法在模板中获得模型的cid。我的代码是
<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>
从上面的代码,我可以得到aptId, beginTime和end Time,但不是Cid。如何从一个集合中获得模型的Cid,同时在模板上渲染它?
和我的渲染方法从视图看起来像这样
render:function(){
var template = _.template($("#slot-display-template").html());
compiledTmp = template({slots: this.collection.toJSON()})
this.$el.append(compiledTmp);
}
使用cid作为一个型号的唯一标识符有什么缺点吗?
提前感谢!!
默认cid
不包含在toJSON
输出中。您需要在模型定义中覆盖toJSON
,并包含cid
。
toJSON: function() {
var json = Backbone.Model.prototype.toJSON.apply(this, arguments);
json.cid = this.cid;
return json;
}
如果你需要一个广告的解决方案,这也可以工作:
var params = _.extend({}, this.model.toJSON(), {cid: this.model.cid})
顺便说一下,如果您不需要扩展所有模型的行为,您可以使用parse
方法将cid
添加到您的模型中。例如,你有一个collection ' collection '。您可以为这个集合指定模型,并覆盖parse
方法,将模型的cid
附加到响应。
var Collection = Backbone.Collection.extend({
model: Model
});
var Model = Backbone.Model.extend({
parse: function(response) {
response.cid = this.cid;
return response;
}
});
因此您将能够从模型的属性中获得cid
。
相关文章:
- 如何使用backbone.js从集合中获取模型名称
- Django 使用 JSON 获取模型方法的值
- 在Waterline中动态定义和获取模型
- 在Backbone中通过CID设置和获取模型
- 从Ember视图获取模型属性
- 在不同的模型中获取模型id会在主干中创建表单
- 余烬需要刷新浏览器才能获取模型数据
- Ember.js:使用模型实例的路由获取模型实例的 url 字符串
- 主干视图在模型完成提取后获取模型变量
- 有没有办法轻松获取 C# 模型的 JavaScript 表示形式
- 角度形式 - 从包装器中的字段获取模型
- 如何在获取操作后获取模型属性
- 从 JSON.file 获取模型并将其存储在本地存储主干
- 如何从主干中的嵌套 json 对象获取模型属性
- 在单独的Javascript文件中获取模型值
- 如何获取模型的哪个特定属性已更改?这在Backbone.js中可能吗
- 如何按id从集合中获取模型
- 在ExtJS中从GridPanel获取模型
- 如何获取模型内部的组件引用保存回调函数
- Ember.js渲染模板在其他模板中没有获取模型