将新数据附加到 Backbone 关系

Appending new data to the Backbone Relational Relation

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

除了每次我重新 运行

之外,一切都很好
items.fetch

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

我想要它做什么:我希望返回的新记录被添加到记录集合中而不是覆盖旧记录'records'

我怎样才能使这项工作使新获取的记录附加到现有记录而不被覆盖?

我不熟悉 ,

但是对于普通的集合,你可以在parse方法中做如下操作:

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

基本上我们将响应与现有数据和 return 结合起来,以便我们在集合更新时维护以前的数据

{ remove: false } 添加到您的 fetch 通话中:

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

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

The behavior of fetch can be customized by using the available set options. For example, to fetch a collection, getting an "add" event for every new model, and a "change" event for every changed existing model, without removing anything: collection.fetch({remove: false})

可用的 set 选项是 addremovemerge。将一个(或全部)设置为 false 将在 fetch.

中禁用该功能

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