6

ここのドキュメントによると: http://documentcloud.github.com/backbone/#FAQ-eventsコレクションには、サーバーとコレクションを同期するために何かを行うと、同期イベントが発生します。コレクションで fetch メソッドを呼び出し、同期イベントを待機しようとしましたが、決して起こりません。Add イベントが発生しますが、コレクション内のすべてのアイテムを同期した後、対応するビューを更新するために必要なイベントは 1 つだけです。このイベントを発生させる別の方法はありますか?

4

2 に答える 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}オプションを設定している場合、すべてのモデルが追加された後に発生する単一のバックボーン イベントはありません。いくつかのオプションがあります:

  1. イベントを聞いて、add繰り返し呼び出されることを期待してください
  2. 関数を使用してデバウンスされたハンドラーを使用して、単一のイベントをエミュレートし_.debounce()ます。
  3. からの戻り値fetch()は jQuery XMLHttpRequest オブジェクトです。jQuery Deferredインターフェイスを実装しています。だからあなたはその終わりを聞くことができました。例えば:

    myCollection.fetch({add:true}).done(function(){
        myView.render(); //or whatever
    });
    
于 2012-05-25T15:15:28.220 に答える