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 に答える