我有一个模型,它包含一些Backbone.Collections的默认对象。我不知道这是否是最优雅的解决方案,但它现在适合我的需求。但是,在创建模型的新实例时,不会重置集合,但会添加新模型。是否应该自动重置默认值?我现在必须在初始化函数中设置myColls。
var MyModel = Backbone.Model.extend({
defaults: {
'someProp': '',
'myColls': {
'first': new Backbone.Collection(),
'second': new Backbone.Collection(),
'third': new Backbone.Collection()
}
},
initialize: function() {
// This does reset myColls:
this.set('myColls', {
'first': new Backbone.Collection(),
'second': new Backbone.Collection(),
'third': new Backbone.Collection()
});
}
}
答案 0 :(得分:3)
请记住,在JavaScript中,对象是通过引用传递的,所以如果 如果将对象包含为默认值,则将在所有对象之间共享 实例。相反,将默认值定义为函数。
所以,
var MyModel = Backbone.Model.extend({
defaults: function() {
return {
'someProp': '',
'myColls': {
'first': new Backbone.Collection(),
'second': new Backbone.Collection(),
'third': new Backbone.Collection()
}
};
},
initialize: function() {
}
});