2014-09-22 49 views
0

我有一個按鈕'搜索'。當我點擊它時,它會在網格中進行一些搜索和加載數據。如何掩蓋和揭開面板

我想在這裏添加Mask和Unmask功能。我使用extJS5

   { 
        xtype: 'button', 
        text: 'Search', 
        handler : function() { 
         var searchPanel = Ext.getCmp('searchPanel'), 
          grid = Ext.getCmp('searchResultsGrid'), 
          searchCrit = searchPanel.gatherCriteria(); 
         Ext.getBody().mask("Loading Data .."); 
         grid.executeSearch(searchCrit); 
         Ext.getBody().unmask(); 
        } 
       } 

我已經addedd Ext.getBody().mask("Loading Data ..");Ext.getBody().unmask();。但它不能正常工作。

任何想法,如何掩蓋和揭露事件中的面板。

回答

0

這取決於您使用哪個代理。 如果您使用內存代理,則不會顯示掩碼,因爲所有內容都是一次執行的,並且瀏覽器無法使其可見。 IMO使其可見的最好方法是使用defer

Ext.getBody().mask("Loading Data .."); 
Ext.Function.defer(function() { 
    grid.executeSearch(searchCrit); 
    Ext.getBody().unmask(); 
}, 10); 

這將會給瀏覽器足夠的時間做面膜可見。

如果使用任何其他代理,那麼電網負荷數據不同步,所以你需要去揭穿它load事件被觸發後,沒有經過executeSearch電話:

Ext.getBody().mask("Loading Data .."); 
grid.executeSearch(searchCrit); 
grid.on('load', function() { 
    Ext.getBody().unmask(); 
}, grid, { single: true }); 

BTW格在默認情況下已經掩蔽啓用(loadMask配置參數從Ext.grid.View)。您可能會錯過某些配置。檢查此示例:http://jsfiddle.net/seur2aLx/9/