2012-08-24 12 views
5

Dlaczego to takie trudne? Nie mogę używać CSS lub już bym z tym skończył. Mam "przycisk" składający się z pojemnika, obrazu i etykiety, a wydarzenie click działa dobrze dla kontenera. Jednakże - robienie czegoś tak prostego, jak zmiana koloru tła na hover, sprawia, że ​​teraz nienawidzę ExtJs, więc musi to być prostszy sposób na zrobienie tego.Stosowanie efektu hover do kontenera w ExtJs

To, co mam do tej pory:

Ext.create('Ext.container.Container', { 
       layout: 'hbox', 
       style: { backgroundColor: '#ddd', margin: "5px 0px 5px 5px", padding: "3px", width: "150px", fontSize: "8pt" }, 
       listeners: { 
        render: function (c) { 
         c.el.on('click', function() { alert('Downloading Report'); }); 

         c.el.on('mouseover', function() { 
          //alert("mouseover"); 
          Ext.apply(this, { style: { backgroundColor: '#aaa'} }); 
         } 
         ); 

         c.el.on('mouseout', function() { 
          //alert("mouseout"); 
          Ext.apply(this, { style: { backgroundColor: '#ddd'} }); 
         } 
         ); 
        }, 
        scope: this 
       }, 
       items: [ 
        { xtype: 'image', src: "resources/images/icons/monoDownload32.png", style: { margin: "2px", maxWidth: "32px"} }, 
        { 
         xtype: 'label', 
         text: 'MS Excel Report', 
         style: { margin: "2px", fontSize: "8pt" } 
        } 
       ] 
       }) 

Alarmy są nazywane ale styl nie jest stosowana. Czy istnieje czystszy sposób robienia czegoś tak prostego? LUB czy istnieje lepsza kontrola do wykorzystania w tej sytuacji, która może osiągnąć takie same wyniki.

+1

Dlaczego nie można użyć CSS ? Czy możesz ponownie skompilować SASS? – sissonb

+0

Bo to ma sens! :( – Gallen

Odpowiedz

5

Szkoda, że ​​nie można używać CSS. Gdybyś mógł, to overCls byłby drogą: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.AbstractComponent-cfg-overCls

Porzucając to, twoje podejście jest bliskie. Zastosowanie obiektu stylu na el nie spowoduje niczego, ponieważ Ext ​​nie ma pojęcia, że ​​to zrobiłeś. Zamiast chcesz zadzwonić setStyle lub applyStyles

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.dom.Element-method-applyStyles

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.dom.Element-method-setStyle

+0

Dzięki za pomoc, ale dostałem swoją drogę i skorzystałem z css.To była zdecydowanie odpowiedź, której szukałem! – Gallen