2011-11-25 33 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(); 
        ... 
       } 
      } 
     }); 
     ...