collection.fetch() メソッドを実行してバックボーン コレクションを初期化し、しばらくしてから、モデルを更新するためにコレクションに再度フェッチするように要求しました。ビューを削除/更新するためにビューからサブスクライブできる、発生したモデルからのイベントはありますか。
1 に答える
特定の「コレクションが再フェッチされました」というイベントはありませんが、必要ありません。fetch
コレクションをリセットします。
fetch
collection.fetch([options])
[...]
サーバーからモデル データが返されると、コレクションはリセットされます。
そしてreset
、イベントをトリガーし"reset"
ます:
reset
collection.reset(models, [options])
[...] reset
を 使用して、コレクションをモデル (または属性ハッシュ) の新しいリストに置き換え、最後に単一のイベントをトリガーします。"reset"
したがって、コレクションからイベントをリッスンし"reset"
、ビューを取得したらビューを再レンダリングします。
ChangeLogfetch
から、Backbone 1.0で変更された の動作:
- Collection の "update" の名前をsetに変更しました。これは、類似の との並列処理と、reset
model.set()
との対比を目的としています。fetch後のデフォルトの更新メカニズムになりました。「リセット」を引き続き使用する場合は、 を渡します。{reset: true}
そして、私たちが見ればset
:
設定
collection.set(models, [options])
set メソッドは、渡されたモデルのリストを使用して、コレクションの「スマートな」更新を実行します。リスト内のモデルがまだコレクションにない場合は、追加されます。モデルがすでにコレクションにある場合、その属性はマージされます。リストにないモデルがコレクションに含まれている場合、それらは削除されます。これが発生すると、適切な
"add"
、"remove"
、および"change"
イベントがすべて発生します。
したがって、イベントcollection.fetch({ reset: true })
を使い続けるか、個々の 、、およびイベントをリッスンするかを言うことができます。"reset"
collection.fetch()
"add"
"remove"
"change"