重置Backbone.Model中的Backbone.Collections

时间:2013-04-16 07:40:46

标签: backbone.js

我有一个模型,它包含一些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()
        });

    }
}

1 个答案:

答案 0 :(得分:3)

Model.defaults

中的Backbone文档中所述
  

请记住,在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() {
    }
});