2012-03-01 57 views
1

我有2个商店,一个包含权限,另一个包含要显示在网格中的数据。但是我的文件中有一段代码必须在这两个存储加载后才能执行。目前在我的代码没有这种条件检查,并不能保证商店在执行关键代码之前加载两个ExtJS商店必须在执行一段代码之前加载

回答

1

为什么你不听两个商店load事件? 当您加载商店时,您会翻转其旗帜。当两个标志切换时,您都会调用您的关键代码。

{ 

    firstLoaded: false, 
    secondLoaded: false, 

    initComponent: function(){ 
     ... 
     firstStore.on('load', function(){ this.firstLoaded=true; this.check(); }, this); 
     secondStore.on('load', function(){ this.secondLoaded=true; this.check(); }, this); 
     ... 
    }, 

    check: function(){ 
     if (this.firstLoaded && this.secondLoaded) { 
     this.initializeLSEngine(); 
     } 
    }, 

    initializeLSEngine: function(){ 
     ... 
    } 

} 

如果需要添加最终以{single:true}.on

0

使用Extjs,我想你将不得不使用回调方法。

ExtJs存储自带加载回调方法。您可以先加载一个商店,一旦加载,然后开始另一个商店的加载,最后您将能够知道两个商店都已加载。

+0

我需要调用关键代码,只有在加载了2个存储后,这恰好是一个afterrender函数 – 2012-03-01 13:56:16

+0

然后,也许你可以将代码放入afterrender中,一旦它被渲染,开始加载商店,然后其他商店 – 2012-03-02 05:47:02

+0

你弄错了:我想要先加载2个商店,然后再执行afterrender中的代码。以下是代码: afterrender:function(viewPort) { initializeLSEngine(); } 在上面的代码中,我希望在调用initializeLSEngine之前执行2个存储 – 2012-03-02 10:20:52