2011-06-02 83 views
3

我正在爲我的應用程序使用Extjs。當extjs完全加載應用程序(圖像和所有內容)時,哪個事件/偵聽器被觸發?extjs 3 - 當extjs完全加載時會觸發哪個事件

我試着以下但這些工作的:

  • 機構或窗口的onload(body標籤是空的)
  • 視口渲染聽衆

我目前在做什麼:當我啓動它顯示「加載」掩碼的應用程序。然後ajax請求被觸發,當它完成時,「加載」掩碼被刪除。以下可能會給一些想法:

Ext.onReady(function(){ 
    Ext.ux.mask = new Ext.LoadMask(Ext.getBody(), {msg: "Loading..."}); 
    Ext.ux.mask.show(); // Show the mask 

    // All components are loaded eg. viewport, tabpanel, button etc... 
    ajax_request(); // Somewhere between the code ajax request is called 
    // All components are loaded eg. viewport, tabpanel, button etc... 

    function ajax_request() { 
     // Other processing 

     Ext.ux.mask.hide(); // Hide the mask 
    } 
}); 

的問題是Ajax請求是需要很長時間,所以我現在想換工作的東西如下:

Ext.onReady(function(){ 
    Ext.ux.mask = new Ext.LoadMask(Ext.getBody(), {msg: "Loading..."}); 
    Ext.ux.mask.show(); // Show the mask 

    // All components are loaded eg. viewport, tabpanel, button etc... 
    ajax_request(); // Somewhere between the code ajax request is called 
    // All components are loaded eg. viewport, tabpanel, button etc... 

    function ajax_request() { 
     // Other processing 

     //Ext.ux.mask.hide(); // Hide the mask - removed 
    } 

    // I want to call this when everything is loaded on the page 
    function everything_loaded() { 
     Ext.ux.mask.hide(); // Hide the mask 
    } 

}); 

任何想法,對此有何看法?非常感謝您的幫助。

+0

爲什麼不使用'Ext.onReady'? – 2011-06-03 02:37:39

+0

In Ext。onReady()所有的組件都被加載,但它們並不是100%的工作狀態,在Ext.onReady – user427969 2011-06-03 02:44:45

+0

的最後一條語句中,你是否試圖加載自己的圖像等?然後在所有組件加載時使用ext? – 2011-06-03 02:52:28

回答

0

感謝AMOL和Warung Nasi 49.雖然我找不到最好的方法,但我設法得到幾乎預期的結果:

Ext.onReady(function(){ 
    Ext.ux.mask = new Ext.LoadMask(Ext.getBody(), {msg: "Loading..."}); 
    Ext.ux.mask.show(); // Show the mask 

    // All components are loaded eg. viewport, tabpanel, button etc... 

    setTimeout(function(){ 
     Ext.ux.mask.hide(); 
    }, 2000); 

}); 
3

你指的是什麼ExtJs版本? 3.x還是4.x?

如果是4.x,請考慮使用/遵循MVC Application Architecture準則。在這種情況下,你要在MVC Application ArchitectureExt.app.Application

描述如果3.x中,我猜Ext.onReady()是他們有最好的覆蓋Ext.application.launch

UPDATE

基於更新後的問題,這是你在找什麼 -


Ext.onReady(function(){ 
    Ext.Ajax.on('beforerequest', showSpinner, this); 
    Ext.Ajax.on('requestcomplete', hideSpinner, this); 
    Ext.Ajax.on('requestexception', hideSpinner, this); 
... 
}); //end of onReady 

showSpinner = function(){ 
    //setup and show mask 
} 

hideSpinner = function(){ 
//hide mask 
} 

參考 - 您的更新Ext.Ajax

+0

嗨,感謝您的回覆。我已更新我的問題以反映我想要的內容。問候 – user427969 2011-06-06 01:05:48

+0

更新了答案。這也具有(UI)正在使用時自動顯示和隱藏任何ajax調用的遮罩的(良好的)副作用。 – 2011-06-06 16:46:21

2

基地....我得到的結論您使用的是Ext 3.xx版本

當我啓動應用程序它會顯示「加載」掩碼。然後一個Ajax請求被觸發,當它完成,「加載」面罩去除

你怎麼叫AJAX?你爲什麼不在ajax回調中隱藏面具?

Ext.Ajax.request({ 
    url : "blabla", 
    method : "GET", 
    callback : function(){ 
     Ext.ux.mask.hide(); 
    } 
}); 

,或者mybe你想嘗試這個one(這是我用來顯示預載)

+0

嗨,謝謝你的回覆。目前我只在callback()方法中隱藏了掩碼,但是我的ajax請求很耗時,所以我不想等那麼久。此外,我試過鏈接,但我不能使用那個因爲我在身體上使用面具,所以它隱藏了身體。問候 – user427969 2011-06-06 04:34:55

0

嘗試afterlayout事件,並指定一個方法來執行時,它的trigered

相關問題