次のフローを持つ backbone.js/Chaplin アプリがあります。
- コレクションでインスタンス化されたコレクション ビュー
- コレクションはサーバーから取得されます
- コレクションの同期時に、コレクション ビュー内の各モデルの「アイテム ビュー」をレンダリングします。
これは、大量の todo を含む todo リストである可能性があります。1000 個の todo があるとします。
すべての仕事がレンダリングされたら、コレクション ビューに jQuery 効果を適用したいので、すべてのアイテム ビューが完全にレンダリングされるようにする必要があります。
jQuery 効果を適用する前に、すべての項目がコレクション ビュー内でレンダリングされていることを確認する最善の方法は何ですか?
私は現在、最後のビューがレンダリングされるのを待ってからjQuery効果を呼び出していますが、htmlがまだページに描画されていないように見えるため、これは機能しません。タイムアウトを追加した場合にのみ正しく機能します。
アイテム ビューでの render 関数のコードは次のとおりです。
render: function () {
BaseView.prototype.render.apply(this, arguments);
if (this.isLastItemView()) {
setTimeout(function () {
Chaplin.mediator.publish('last_news_item_rendered');
}, 1000);
}
}