ここのドキュメントによると: http://documentcloud.github.com/backbone/#FAQ-eventsコレクションには、サーバーとコレクションを同期するために何かを行うと、同期イベントが発生します。コレクションで fetch メソッドを呼び出し、同期イベントを待機しようとしましたが、決して起こりません。Add イベントが発生しますが、コレクション内のすべてのアイテムを同期した後、対応するビューを更新するために必要なイベントは 1 つだけです。このイベントを発生させる別の方法はありますか?
質問する
13974 次
2 に答える
5
解決策は、fetch メソッドに param として渡された「成功」コールバックで同期イベントを手動で起動することです。
this.collection.fetch({add: true, success: function(collection, response){
collection.trigger('sync');
}});
于 2012-05-25T15:34:29.300 に答える
2
「同期」イベントは、モデルを変更したときにのみ発生すると思います。したがって、モデルを作成、更新、または削除すると、「同期」イベントが発生します。
あなたの場合、コレクションの「リセット」イベントをリッスンしたいと思います。
編集:{add:true}
オプションを設定している場合、すべてのモデルが追加された後に発生する単一のバックボーン イベントはありません。いくつかのオプションがあります:
- イベントを聞いて、
add
繰り返し呼び出されることを期待してください - 関数を使用してデバウンスされたハンドラーを使用して、単一のイベントをエミュレートし
_.debounce()
ます。 からの戻り値
fetch()
は jQuery XMLHttpRequest オブジェクトです。jQuery Deferredインターフェイスを実装しています。だからあなたはその終わりを聞くことができました。例えば:myCollection.fetch({add:true}).done(function(){ myView.render(); //or whatever });
于 2012-05-25T15:15:28.220 に答える