2011-07-21 47 views
12

如何將loadMask應用於僅一個元素,而不是整個瀏覽器的width-height?

默認
enter image description here將loadMask()應用於extjs中的單個元素?



這裏,只有一個元素被屏蔽,並且消息框是在中心,這個元素而不是整個顯示器內部...
enter image description here


任何想法?

編輯:

@Molecule,謝謝你,但是這是當數據從某些源加載,我需要的是:

{ 
    xtype:"button", 
    text:"Alert", 
    handler: function(){ 

     Ext.Msg.show({ 
     title:'Save Changes?', 
     msg: 'You are closing ?', 
     buttons: Ext.Msg.YES, 
     setLoading: // here somehow only mask parent element, and position alertBox... 
    } 

} 
+0

你談論元素,但它們是組件。 –

+0

@Chris,是的,它們是[Components](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Component):-) –

回答

29

每個組件都有它自己的loadMask財產。您可以致電YourComponent.setLoading使用它。這裏是fiddle來說明我在說什麼。

另一種方法是使用new Ext.LoadMask(YourComponent.el, {msg:"Please wait..."});。你可以在我的fiddle看看使用情況。

UPDATE

下面是代碼示例展示瞭如何運用ExtJS4 loadMask和消息框來的Widget指定

Ext.create('Ext.panel.Panel', { 
    width: 600, 
    height: 400, 
    title: 'Border Layout', 
    layout: 'border', 
    items: [{ 
     title: 'West Region is collapsible', 
     region:'west', 
     xtype: 'panel', 
     width: 400, 
     id: 'west-region-container', 
     layout: 'fit' 
    },{ 
     title: 'Center Region', 
     region: 'center', 
     xtype: 'panel', 
     layout: 'fit', 
    }], 
    renderTo: Ext.getBody() 
}); 
var myMask = new Ext.LoadMask(Ext.getCmp('west-region-container').el, {useMsg: false}); 
myMask.show(); 
var msg = Ext.Msg.show({ 
    title:'Save Changes?', 
    msg: 'Bla-Bla', 
    buttons: Ext.Msg.OK, 
    modal: false 
}); 
msg.alignTo(Ext.getCmp('west-region-container').el, 'c-c'); 

這裏是try-it-yourself example

+5

ExtJS中的所有組件都至少有一個'el'屬性實際上是指向包裝div的'Ext.Element'。只要你可以訪問這個'el'元素,你就可以在這個el上調用'.mask()'或'.unmask()',或者'Ext.Element'中定義的任何方法。 –

+0

可以提供一個簡單的例子Ext.Msg.show和loadNask ??當然是 –

+0

@Ingol。看看這個[小提琴](http://jsfiddle.net/molecule/pKq8X/2/) –

相關問題