向主干关系追加新数据



我正在尝试设计一种加载更多类型的系统,每次按加载更多时,都会将数据添加到现有集合中。这是UI外观的粗略草图。

除了每次我重新运行之外,一切都很好

items.fetch

它的作用:它用新数据覆盖整个集合

我想让它做什么:我希望返回的新记录添加到记录集合中,而不是覆盖旧的"记录"

我如何使这项工作能够使新提取的记录附加到现有记录而不被覆盖?

{ remove: false }添加到您的fetch调用:

items.fetch({ remove: false, data: { nextId: this.info.get('nextId') } });

这里发生的事情是Collection#fetch将其模型与服务器返回的数据同步。这包括添加新模型、更新现有模型以及删除响应中未包含的模型。

fetch的行为可以通过使用可用的集合选项进行自定义。例如,要获取集合,请为每个新模型获取一个"添加"事件,为每个已更改的现有模型获得一个"更改"事件,而不删除任何内容:collection.fetch({remove:false})

可用的set选项有addremovemerge。将一个(或全部)设置为false将禁用fetch中的该功能。

听起来您只需要{ remove: false },而不需要addmerge功能。

我不熟悉主干关系,

但对于普通的集合,您可以在解析方法中执行以下操作:

Backbone.Collection.extend({
  parse: function(response){
    // you can update the info here like this.info = response.info or similar
    return _.union(this.toJSON(), response.records);
  }
});

基本上,我们将响应与现有数据组合并返回,以便在集合更新时维护以前的数据

相关内容

  • 没有找到相关文章