2011-11-25 34 views
0

我发现了很多关于如何通过数据存储/代理(我使用直接类型)将数据加载到Ext JS 4中的网格时创建“加载”消息或掩码的参考。Ext JS 4直销店如何*防止*加载掩码?

所以我在我的控制器在一个点上添加了这个(因为我没有得到事先加载消息):

init: function() { 
var store = this.getEncountersStore(); 
store.on({ 
     beforeload: function(store,operation,eopts) { 
      Ext.getBody().mask('Loading...'); 
        }, 
        load: function(store,records,success,operation,eopts) { 
          Ext.getBody().unmask();    
         } 
       }); 

    } 

这似乎是对我在我的MVC应用程序的工作,但是,接下来我添加任务管理器定时自动刷新每10秒格栅数据:

this.runningTask = Ext.TaskManager.start ({ 
       run: this.loadEncounterData, 
       interval: 10000, 
       scope: this 
      }); 

loadEncounterData: function() { 
       var store = this.getEncountersStore(); 
       store.load({ 
        params: { 
        }, 
        callback: function(r,options,success) { 
         if(success == true)  
         ... 

        } //callback 
       }); //store.load 

我注意到有现在屏幕上的两个“装载”面具的消息!

所以,我从我的控制器init中删除了上面的'store.on'代码块,现在我只有一条消息。

那么其他消息来自哪里呢?

它是一个网格?:

Ext.define('ESDB.view.encounter.List', { 
extend: 'Ext.grid.Panel', 
... 

我发现了一个page,似乎在问同一个问题的一部分,但我无法弄清楚如何得到它的工作,还是怎么办它根据ExtJS 4/MVC。

回答

4

loadMask是不是在网格面板中的配置。 可以在GridPanel中

viewConfig : { 
    loadMask: false 
} 
0

你可以改变你的负载功能,只需加载存储添加的配置:

loadEncounterData: function() { 
    var store = this.getEncountersStore(); 
    store.load(); 
    ... 

然后,你可以用下面的办法来自动处理loadMask每当网格存储负载。 使用Ext.util.DelayedTask可以方便地防止loadMask在负载少于500ms时出现。

Ext.define('ESDB.view.encounter.List', { 
    extend: 'Ext.grid.Panel', 
    ... 

    initComponent: function() { 
     var me = this; 

     me._mask = new Ext.LoadMask(me, {msg: 'Loading...'}); 
     me._maskd = new Ext.util.DelayedTask(function() { 
      me._mask.show(); 
     }); 
     me.store = Ext.create('Ext.data.Store', { 
      ... 
      listeners: { 
       beforeload: function() { 
        me._maskd.delay(500); 
        ... 
       }, 
       load: function() { 
        me._maskd.cancel(); 
        me._mask.hide(); 
        ... 
       } 
      } 
     }); 
     ...