使用辅助方法的主干toJSON

时间:2011-11-22 11:14:05

标签: backbone.js mustache

我有一个带有属性的骨干模型和一些辅助方法,它们输出的不是实际属性(例如格式化)。

但是,当我调用toJSON时,只返回属性,因此我的胡子模板无法访问这些辅助方法。有什么方法可以解决这个问题吗?或者我应该采取不同的方法吗?

唯一的方法是创建属性的格式化版本并在每次属性更改时更新它?

2 个答案:

答案 0 :(得分:6)

Jorge,我会在我自己的方法中扩展toJSON,并将新添加的json添加到模板中。

像这样:

var userModel = Backbone.Model.extend({
    initialize: function(){
        _.bindAll(this, 'fullname', 'toFullJSON');
    },
    fullname: function(){
        return this.get('name') + " " + this.get('lastname');
    },
    toFullJSON: function(){
        var json = this.toJSON();
        return _.extend(json, {fullname : this.fullname()});
    }
});

var user = new userModel();
u.set({name: 'John', lastname: 'Doe'});

// you will see in this console log, that the toFullJSON function returns both the toJSON properties, and your added propert(y)(ies)...
console.log(u.toFullJSON());

答案 1 :(得分:0)

确保JSON正确无误。如果要返回对象,则它们内部可能会有一些反向引用(它们在JSON中不受支持,可能会被省略)。