将新数据附加到Backbone关系关系

时间:2015-11-09 04:51:24

标签: backbone.js backbone-collections backbone-model backbone-relational

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

除非你每次重新运行

,否则一切都会非常好
items.fetch

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

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

如何使这项工作能够将新获取的记录附加到现有记录中而不会覆盖?

2 个答案:

答案 0 :(得分:3)

{ remove: false }添加到fetch来电:

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

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

  

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

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

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

答案 1 :(得分:1)

我不熟悉

但是使用普通集合,您可以在解析方法中执行以下操作:

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

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