2

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

4

1 回答 1

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
});
于 2013-07-30T09:17:25.470 回答