4

サーバーからモデルの配列をフェッチして返されるコレクション(Backbone.paginatorを使用)があります。このコレクションは、私の「メインビュー」と「サブビュー」で使用されます。これらの各ビューには、on( "change")イベントがあり、各ビューで特定の処理を実行します。ローダーgifを追加するために(jqueryのbeforeLoadに似た)「startfetch」イベントをリッスンできるかどうかを考えていました。バックボーンはこれの1つを提供しますか?

そうでない場合..どうすれば拡張できますか?

ありがとう!

4

4 に答える 4

16

イベント「リクエスト」を使用するだけです。モデル(またはコレクション)がサーバーへのリクエストを開始したときに発生します。バージョン0.9.9以降で使用できます。

于 2012-12-15T08:05:30.157 に答える
3

バックボーンコレクションのプロトタイプは、次のように拡張できます。

(function() {
  var fetch = Backbone.Collection.prototype.fetch;
  Backbone.Collection.prototype.fetch = function() {
    this.trigger('beforeFetch');
    return fetch.apply(this, arguments);
  };
})();

今、あなたは次のようなことをすることができます:

myCollection.on('beforeFetch', function() {
  // take care of before fetch business
});
于 2012-10-04T13:54:19.793 に答える
2

各フェッチ呼び出しの前にロード画面を設定するメソッドへの呼び出しを追加する必要があります。

this.collection.on('reset', this.displayNormal)
this.displayLoader();
this.collection.fetch();

これで始められるはずです。そのイベントが必要な場合(理由がわかります)、次のようにフェッチをオーバーライドできます

fetch: function() {
  this.trigger('beforeFetch');
  return Backbone.Collection.prototype.fetch.apply(this, arguments);
}

お役に立てれば!

于 2012-10-04T13:56:14.123 に答える
0

できることは、fetchを呼び出したときに読み込み中の画像を表示し、fetchの成功コールバックを設定して再び非表示にすることです。

于 2012-10-04T13:49:38.697 に答える