Extjs 4.1 - 如何等待组合中的所有商店被加载
Posted
技术标签:
【中文标题】Extjs 4.1 - 如何等待组合中的所有商店被加载【英文标题】:Extjs 4.1 - How to wait all store in combo is loaded 【发布时间】:2013-07-30 08:47:04 【问题描述】:我有一个窗口包含许多默认 autoload = false 的组合。我想等待窗口中的所有组合都加载完毕,然后我会显示类似的窗口
var arrCombos = window.query('combo');
Ext.each(arrCombos, function(combo)
combo.getStore().load(); // load
);
WaitForFunction(arrCombos); // wait for loading done
window.show(); // show my window
这是我的WaitForFunction
function WaitForFunction(arrCombos)
var all = 1;
Ext.each(arrCombos, function(combo)
if (combo.store.isLoading())
all = 0;
);
if (all == 0)
setTimeout(WaitForFunction(arrCombos), 100);
但是失败了,那说too much recursion
我该怎么做谢谢。
【问题讨论】:
setTimeout(WaitForFunction(arrCombos), 100)
立即调用WaitForFunction
并将返回值传递给setTimeout
。你的意思是:setTimeout(function() WaitForFunction(arrCombos) , 100)
。我认为您的代码会以这种方式工作...但是 sra 基于事件和计数器的方法更好,因为它不会等待任何不需要的毫秒。
@rixo 是的,谢谢。我的代码运行了,但运行不正常:) 我使用 sra 的代码,它很好
【参考方案1】:
又快又脏,但这样的东西应该可以工作:
var arrCombos = window.query('combo'),
storeCt = 0;
function checkState()
if(--storeCt == 0)
window.show();
Ext.each(arrCombos, function (combo)
var store = combo.getStore();
storeCt++;
store.on('load', checkState, this, single: true)
store.load(); // load
);
【讨论】:
以上是关于Extjs 4.1 - 如何等待组合中的所有商店被加载的主要内容,如果未能解决你的问题,请参考以下文章