0

コレクションのフェッチ後にrenderを呼び出そうとしています。

私のinitializeメソッドには、次のものがあります。

this.collection.bind('all', this.render, this);
this.collection.fetch();

IEでは、コレクションにデータが含まれる前に、レンダリングを試みることがあるようです。コレクションにはバインドできる「変更」イベントがないようですが、レンダリングする前にコレクションがフェッチされていることを確認するためのより良い方法はありますか?

ありがとう!

編集:

ページを更新すると、常に機能しているように見えますが、アドレスバーをもう一度クリックしてページを読み込むと、機能しなくなります。

4

4 に答える 4

2

レンダリングする前にデータがフェッチされていることを保証したい場合は、jQueryのdeferredオブジェクトを使用することをお勧めします。

this.collection.deferred = this.collection.fetch();
self = this;
this.collection.deferred.done(function() {
    self.collection.render();
  }
);

基本的に、送信先の関数に入力したものはすべて、フェッチが完了した後doneにのみ呼び出されます。

延期の詳細:

于 2012-07-21T08:17:05.477 に答える
0

バックボーンのイベントカタログを見ると、リセットイベントを聞きたいようです。

于 2012-07-20T19:39:44.193 に答える
0

以下が機能するはずです。

this.collection.on('reset', this.render);
this.collection.fetch();

通常、Backbone.jsでは、on()を使用してコールバックをオブジェクトにバインドします。

于 2012-07-20T19:43:27.903 に答える
0

以下は間違いなく機能するはずです、それは私のために機能しました...

以下の代わりに

this.collection.fetch();

これを使って

this.collection.fetch(async: false);
于 2013-06-28T15:03:03.143 に答える