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%'                                                    
]

私はそれらのうちの2つをそのようにバッチ更新し、ビューにバインドされているモデル自体を更新させたいと思います。

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

コレクションで.addまたは.resetを実行すると、同じIDのモデルを追加/更新できなくなります。これらのモデルをバッチ更新するための私のオプションは何ですか?

4

1 に答える 1

2

編集:addバックボーン0.9.9では、オプションを指定してメソッドを使用できるようになりました{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 に答える