2012-02-24 35 views
0

論壇成員我在使用extjs 4.0.2a的loadMask屬性時遇到了一個問題。其實我有一個網格點擊打開窗口的詳細信息。如何在網格被雙擊時加載蒙板以等待細節窗口

由於我的細節窗口需要更多時間才能進入屏幕,所以我只是決定使用Extjs的loadMask屬性。但不知道爲什麼當我雙擊網格行時,以及在屏幕上顯示細節窗口一段時間後,加載消息沒有顯示。

格上雙擊我執行下面的代碼

projectEditTask: function(grid,cell,row,col,e) { 
var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Loading.."});   
myMask.show(); 
var win = this.getProjectGanttwindow(); 
win.on('show', myMask.hide, myMask); 
} 

,但不知道裝不顯示,等待某個時刻之後正確顯示我的窗口。

我只是想當我雙擊網格加載消息應該顯示,當窗口完全加載後加載消息應該消失,並應查看細節窗口。

當我按照你說的做出改變時顯示加載消息,但我的窗口尚未打開。下面窗口的代碼我試圖打開

我projectGanttwindow是

Ext.define('gantt.view.projectmgt.projectGanttwindow' ,{ 
    extend: 'Ext.window.Window', 
    alias : 'widget.projectganttwindow', 
    requires: ['gantt.view.projectmgt.projectGanttpanel'], 
    editform:1, 
    id: 'projectganttwindow', 
    title: 'Project Management', 
    width: '100%', 
    height: '100%', 
    closeAction: 'destroy', 
    isWindow: true, 
    flex:1, 
    isModal: true, 
    constrain: true, 
    maximizable: true, 
    stateful: false, 
    projectId: null, // this will be set before showing window 

    listeners: { 
     hide: function() { 
      alert('hide'); 
      //var store = Ext.data.StoreManager.lookup('taskStore').destroyStore(); 
      //Ext.destroy(store); 
      //store.destroyStore(); 
      console.log('Done destroying'); 
     } 
    }, 

    initComponent: function() { 
     var me = this; 
     me.layoutConfig = { 
      align: 'stretch' 
     }; 
     me.items = [{ 
      xtype: 'projectganttpanel', 
      allowBlank: false 
     }]; 

     me.callParent(arguments); 

     me.on({ 
      scope: me, 
      beforeshow: me.onBeforeShow 
     }); 
    }, 

    onBeforeShow: function() {  
     var projectId = this.projectId; 
     console.log('BEFOR SHOW ::'+projectId); 
     if(projectId != null) { 
      var store = Ext.data.StoreManager.lookup('taskStore'); 
      store.load({ 
       params: {'id': projectId} 
      }); 
     } 
    } 
}); 
+0

加載消息被正確地表示用於我。我看不出這個代碼有什麼問題。 – Krzysztof 2012-02-24 09:31:09

+0

實際上我的窗口需要超過20秒才能加載,所以直到那時我想要顯示加載掩碼消息。但是我沒有在20-25秒之後向我顯示加載消息和詳細的窗口加載。那麼有什麼辦法可以設置loadMask的超時? – 2012-02-24 09:38:28

+0

我不太明白。加載蒙板不可見,或者在加載窗口後不知道如何隱藏蒙板? – Krzysztof 2012-02-24 09:58:49

回答

0

試試這個

function loadMask(el,flag,msg){ 
var Mask = new Ext.LoadMask(Ext.get(el), {msg:msg}); 
if(flag) 
    Mask.show(); 
else 
    Mask.hide(); 

}

當U點擊電網調用這個函數

//啓用屏蔽消息

loadMask(Ext.getBody(),'1','Please wait...');

彈出加載呼叫後

//禁用掩模消息

loadMask(Ext.getBody(),'','Please wait...');