我一直在遇到陈旧的集合引用问题。所以,我有以下模型:
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 :(得分: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);
...
}
});