骨干模型中的自定义属性

时间:2013-09-18 22:28:21

标签: backbone.js

我正在开发一个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。有人可以帮我弄这个吗。 谢谢!

2 个答案:

答案 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') ) );
    }
});

A fork of McGarnagle's fiddle

答案 1 :(得分:2)

最简单的方法可能是覆盖toJSON - 请记住,这是传递给模板的内容。只需调用基类,然后添加所需的任何额外属性:

CustomerDetails = Backbone.Model.extend({
    toJSON: function() {
        var obj = this.attributes;
        obj.newProperty = this.newProperty();
        return obj;
    },
});

Fiddle