默认值仅用于模型内的属性(模型中的数据),每当您创建模型时,它都会从默认值中获取值并设置属性。例如
User = Backbone.Model.extend({
defaults : {
rating : 0
}
})
User1 = new User({ name : 'jack', email : '[email protected] /cdn-cgi/l/email-protection' });
User2 = new User({ name : 'john', email : '[email protected] /cdn-cgi/l/email-protection' });
User1.set({ rating : 2 });
现在,当使用 toJSON 调用时,您的两个模型将打印
{
rating: 2,
name: 'jack',
email: '[email protected] /cdn-cgi/l/email-protection'
}
{
rating: 0,
name: 'john',
email: '[email protected] /cdn-cgi/l/email-protection'
}
由于 defaults 是一个对象,因此您放置在那里的每个值都会立即计算,因此:
defaults : {
rating : defaultRating()
}
将调用 defaultRating() - 不是每次初始化模型时,而是立即调用(在扩展方法中)
您应该使用模型的默认值,在创建模型时需要一些数据(例如 new myModel() )
在您的示例中,您有以下错误:
1.设置一个没有属性的值
defaults : {
PROPERTY : new Model()
}
2.您的默认值不需要这样的选项 - 您应该只在那里放置模型的属性(数据)
只要不被扩展模型中的新默认值替换,默认值就始终适用。
var Model = Backbone.Model.extend({ defaults : { alpha : 'beta' } });
var myModel = Model.extend({ defaults : { beta : 'gama' } });
现在你的 myModel 初始化时将有
{ beta : 'gama' } // alpha : 'beta' will not be set as value, because it is replaced