2011-07-21 13 views
12

Jak zastosować loadMask tylko do jednego elementu, a nie do całej szerokości przeglądarki?

domyślny
enter image description hereStosowanie metody loadMask() do pojedynczego elementu w extjs?



tutaj, tylko jeden element jest zamaskowany, a MessageBox jest w środku, wewnątrz tego elementu, a nie całego ekranu ...
enter image description here


dowolny pomysły?

EDIT:

@Molecule, dzięki, ale to jest, gdy się ładuje dane z jakiegoś źródła, co jest mi potrzebne:

{ 
    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

Mówisz o elementach, ale są one składnikami. –

+0

@Chris, tak, są to [Komponenty] (http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Component) :-) –

Odpowiedz

29

Każdy komponent ma swój własny loadMask nieruchomość. Możesz go użyć, dzwoniąc pod numer YourComponent.setLoading. Oto fiddle, aby zilustrować to, o czym mówię.

Innym sposobem jest użycie new Ext.LoadMask(YourComponent.el, {msg:"Please wait..."});. Możesz spojrzeć na użycie w moim fiddle.

UPDATE

Oto przykład kodu, który pokazuje, jak zastosować ExtJS4 loadMask i MessageBox do określonego 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'); 

A oto try-it-yourself example.

+5

Wszystkie komponenty w ExtJS mają co najmniej właściwość 'el', która jest w rzeczywistości' Ext.Element', która wskazuje na div opakowania. Dopóki masz dostęp do tego elementu 'el', możesz zawsze wywołać' .mask() 'lub' .unmask() 'na tym el lub dowolną metodę zdefiniowaną w' Ext.Element'. –

+0

można podać prosty przykład Ext.Msg.show i loadNask? Proszę –

+0

@Ingol, oczywiście. Spójrz na to [skrzypce] (http://jsfiddle.net/molecule/pKq8X/2/) –

Powiązane problemy