一連の AJAX 呼び出しが完了し、サブビューに渡すコレクションが正常に読み込まれるまでビューのレンダリングを待機させるために、レイアウト マネージャーで問題が発生しています。
これが私の初期化関数です:
initialize : function(){
var collection;
collection = new BobLawBlaw.Collection();
collection.fetch();
this.collection = collection;
}
私のフェッチは少し複雑です:
fetch : function(){
var that = this;
return $.when.apply(null, TL.reporting.getData.call(this, 125)).done(function(xhr1, xhr2){
var data1 = xhr1[0].data, data2 = xhr2[0].data, dates = data1.date,
// do a bunch of stuff with the data i get above to construct the models how i need
models = [
// bunch of objects using the data
];
that.add(models);
});
}
そのgetData
関数は、2 つの ajax 呼び出しから deferred を収集し、それらを配列で返すため、done
両方の呼び出しが完了したときにその関数がトリガーされるようにします。これは期待どおりに機能し、必要なすべてのデータを取得できます。
ただし、フェッチがトリガーされても初期化関数のフローは停止しないため、LayoutManager が beforeRender に進む前にコレクションにデータが入力されません。どうすれば非同期にフェッチできますが、両方の ajax 呼び出しが完了してコレクションにデータが入力されるまで初期化関数を待機させることができますか?