2015-05-20 72 views
0

我一直在遇到过时集合引用的问题。所以,我有以下型号:维护Backbone集合参考

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长的堆栈跟踪。我究竟做错了什么?

回答

0

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

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); 
      ... 
     } 

    }); 
+0

我忘了我已经张贴了这个:-) – ThisRestlessPilgrim

+0

这基本上就是我结束了在初始化(...)这样做,尽管有一些警卫和解析(...)来处理这种情况,其中型号为在客户端创建,以及模型直接来自服务器的情况。 – ThisRestlessPilgrim

+0

哦,我得到的奇怪错误是由Step模型中的子元素解析引起的 – ThisRestlessPilgrim