维护Backbone集合参考

时间:2015-05-20 01:27:10

标签: backbone.js collections marionette

我一直在遇到陈旧的集合引用问题。所以,我有以下模型:

ProcessModel = Backbone.Model.extend({
    initialize: function() {
        this.set('steps', new StepsCollection());
    }
    ...
});

从服务器获取ProcessModel时,也会返回StepsCollection。以前,我有以下解析方法:

parse: function(response) {
    ...
    response.steps = new StepsCollection(response.steps, {parse: true});
}

...然而,这是创建一个全新的集合对象,而不是重用现有的集合对象。这导致了一个与之前的步骤相关的视图。收集变得陈旧。

我尝试过以下方法:

response.steps = this.get('steps').reset(response.steps);

但是我在Object.Marionette.bindEntityEvents中获得了很长的堆栈跟踪。我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个。这将创建单个集合,然后我们将使用解析方法中的新数据集重置相同的集合实例。

    ProcessModel = Backbone.Model.extend({
        initialize: function() {
            this.myCollection = new StepsCollection();
            this.set('steps', this.myCollection);
            ...
        },
        parse: function(response) {

            this.myCollection.reset(response.steps);
            this.set('steps', this.myCollection);
            ...
        }

   });