Extjs 4.1 - 如何等待组合中的所有商店被加载

时间:2013-07-30 08:47:04

标签: extjs extjs4.1

我有一个窗口包含许多默认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 我该怎么办呢。

1 个答案:

答案 0 :(得分:2)

快速而肮脏,但这样的事情应该有效:

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
});