Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   doLayout не работает (https://javascript.ru/forum/extjs/41388-dolayout-ne-rabotaet.html)

asthac 11.09.2013 18:43

doLayout не работает
 
Здрасте,
в методе меняю цвет панельки и жду 1 сек и меняю ее на другой цвет. но вижу только последний цвет. как увидеть смену цвета?

function clickPanel(id) {

    Ext.get(id).setStyle('background-color', 'red');
    sleep(1000);
    Ext.get(id).setStyle('background-color', 'green');

}


Пробовал вызывать метод doLayout() , не помогает. Extjs 4.2 используется. Заранее спасибо за помощь

novikov 12.09.2013 18:20

ExtJs живёт в двух мирах: мире элементов DOM-модели и мире компонентов.

Выполняя Ext.get(id) вы получаете обёртку DOM-элемента. Экземпляр класса Ext.dom.Element:
http://docs.sencha.com/extjs/4.2.1/#...xt.dom.Element

У него нет метода doLayout(). Это метод из другого мира - мира компонентов.

Выведите в консоль:

console.log( Ext.get(id) );
и
console.log( Ext.getCmp(id) );

Что там написано?

novikov 12.09.2013 18:27

Упс... Кажется, я неправильно понял вопрос...

novikov 12.09.2013 18:30

А так виден первый цвет?

function clickPanel(id) {

    Ext.get(id).setStyle('background-color', 'red');
    //sleep(1000);
    //Ext.get(id).setStyle('background-color', 'green');

}

novikov 12.09.2013 18:32

Попробуйте Ext.defer().

http://docs.sencha.com/extjs/4.2.1/#...t-method-defer

function clickPanel(id) {

    Ext.get(id).setStyle('background-color', 'red');

    Ext.defer(function() {
       Ext.get(id).setStyle('background-color', 'green');
    }, 1000);

}


Часовой пояс GMT +3, время: 00:37.