3

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

4

2 回答 2

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

McGarnagle 小提琴的叉子

于 2013-09-18T23:15:59.397 回答
2

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

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

小提琴

于 2013-09-18T22:53:01.153 回答