将新数据附加到 Backbone 关系
Appending new data to the Backbone Relational Relation
我正在尝试设计一种加载更多类型的系统,每次按下加载更多时,都会将数据添加到现有集合中。这是 UI 外观的粗略草图。
除了每次我重新 运行
之外,一切都很好
items.fetch
它的作用:它用新数据覆盖整个集合
我想要它做什么:我希望返回的新记录被添加到记录集合中而不是覆盖旧记录'records'
我怎样才能使这项工作使新获取的记录附加到现有记录而不被覆盖?
我不熟悉 backbone-relational,
但是对于普通的集合,你可以在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
选项是 add
、remove
和 merge
。将一个(或全部)设置为 false
将在 fetch
.
中禁用该功能
听起来您只需要 { remove: false }
,留下 add
和 merge
功能。
我正在尝试设计一种加载更多类型的系统,每次按下加载更多时,都会将数据添加到现有集合中。这是 UI 外观的粗略草图。
除了每次我重新 运行
之外,一切都很好items.fetch
它的作用:它用新数据覆盖整个集合
我想要它做什么:我希望返回的新记录被添加到记录集合中而不是覆盖旧记录'records'
我怎样才能使这项工作使新获取的记录附加到现有记录而不被覆盖?
我不熟悉 backbone-relational,
但是对于普通的集合,你可以在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
选项是 add
、remove
和 merge
。将一个(或全部)设置为 false
将在 fetch
.
听起来您只需要 { remove: false }
,留下 add
和 merge
功能。