1

我有一个包含以下模型的集合:

rows: [
 id: 1
 category: 'Meetings & Banquets'
 progress: 0.8
,
 id: 2
 category: 'Guest Services'
  progress: '50%'
,
 id: 3
 category: 'Concessionaires'
 progress: '20%'    
,
 id: 4
 category: 'Telecommunications'
 progress: 100
,
 id: 5
 category: 'Restaurant'
 progress: '70%'                                                    
]

我想像这样批量更新其中两个,并让绑定到视图的模型自行更新:

rows: [
 id: 1
 category: 'Meetings & Banquets'
 progress: 0.9
,
 id: 2
 category: 'Guest Services'
  progress: '10%'
,
]

当我对集合执行 .add 或 .reset 时,它会阻止我添加/更新具有相同 ID 的模型。我有哪些选项可以批量更新这些模型?

4

1 回答 1

2

编辑:使用主干 0.9.9,您现在可以使用add带有选项的方法{merge: true}

添加 collection.add(models, [options])

如果您将模型添加到集合中已经在集合中的模型,它们将被忽略,除非您传递 {merge: true},在这种情况下,它们的属性将被合并到相应的模型中,触发任何适当的“更改”事件。


我不相信现在在骨干集合中有一个功能可以为你做这件事。也许您可以创建自己的?

MyCollection = Backbone.Collection.extend({
  model: MyItem,

  update: function(updatedArray) {
    var that = this;
    _.each(updateArray, function(element) {
      if(that.get(element.id)) {
        that.get(element.id).set(element);
      }
    });
  }
});

然后:

var collection = new MyCollection(rows); //creates your collection
collection.update(rows2);  //updates specific models.
于 2012-12-08T01:58:59.550 回答