我有一个带有属性的骨干模型和一些辅助方法,它们输出的不是实际属性(例如格式化)。
但是,当我调用toJSON
时,只返回属性,因此我的胡子模板无法访问这些辅助方法。有什么方法可以解决这个问题吗?或者我应该采取不同的方法吗?
唯一的方法是创建属性的格式化版本并在每次属性更改时更新它?
答案 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中不受支持,可能会被省略)。