我在布局管理器中遇到问题,让视图等待渲染,直到一堆 AJAX 调用完成并成功填充了我传递给子视图的集合。
这是我的初始化函数:
initialize : function(){
var collection;
collection = new BobLawBlaw.Collection();
collection.fetch();
this.collection = collection;
}
我的 fetch 有点复杂:
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
函数从两个 ajax 调用中收集延迟并将它们返回到一个数组中,从而允许done
在两个调用都完成时触发该函数。这按预期工作,我可以获得我需要的所有数据。
但是,在触发该 fetch 时,初始化函数中的流程不会停止,因此在 LayoutManager 进入 beforeRender 之前不会及时填充集合。如何异步获取,但让初始化函数等到两个 ajax 调用完成并填充集合?