我正在开发一个Backbone应用程序。我想知道如何在模型中创建自定义属性并在模板中使用它们。这就是我所拥有的。
模型
CustomerDetails = Backbone.Model.extend({
defaults: {
id: undefined,
isOnline: undefined,
profileUrl: undefined,
userType: undefined
},
// I want to set this new property
newProperty: function() {
return this.get("id") + this.get("profileUrl");
}
});
我试图访问它的模板
<script type="text/template" id="customer-details-template">
<div class="message customer-details">
<%=id%>
<%=newProperty%>
</div>
</script>
我可以获取id属性,但不能获取newProperty。有人可以帮我弄这个吗。 谢谢!
答案 0 :(得分:4)
作为覆盖toJSON方法的替代方法,您还可以将属性添加到模型中,并在初始化模型时设置它的值。
var CustomerDetails = Backbone.Model.extend({
defaults: {
id: undefined,
isOnline: undefined,
profileUrl: undefined,
userType: undefined,
newProperty: undefined
},
initialize: function(){
this.updateNewProperty();
},
updateNewProperty: function(){
this.set('newProperty', (this.get('id') + this.get('profileUrl') ) );
}
});
答案 1 :(得分:2)
最简单的方法可能是覆盖toJSON
- 请记住,这是传递给模板的内容。只需调用基类,然后添加所需的任何额外属性:
CustomerDetails = Backbone.Model.extend({
toJSON: function() {
var obj = this.attributes;
obj.newProperty = this.newProperty();
return obj;
},
});