【问题标题】:Maintain Backbone Collection References维护主干集合引用
【发布时间】:2015-05-20 01:27:10
【问题描述】:

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

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 中得到了很长的堆栈跟踪。我做错了什么?

【问题讨论】:

    标签: backbone.js collections marionette


    【解决方案1】:

    试试这个。这将创建单个集合,然后我们将使用 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);
                ...
            }
    
       });
    

    【讨论】:

    • 我忘了我已经发布了这个:-)
    • 这基本上是我结束的工作,尽管在 initialize(...) 和 parse(...) 中有一些守卫来处理在客户端创建模型的情况以及模型直接来自服务器。
    • 哦,我得到的奇怪错误是由Step模型中的子元素解析引起的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多