Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Метод с ошибкой Ext.window.Window.setTitle() (https://javascript.ru/forum/extjs/36043-metod-s-oshibkojj-ext-window-window-settitle.html)

khusamov 01.03.2013 21:46

Метод с ошибкой Ext.window.Window.setTitle()
 
Здравствуйте!

Версия Ext 4.1.1

Обнаружил что метод setTitle вызывает ошибки в работе окон. К примеру такой код:

var w = Ext.create('Ext.window.Window', {
    title: 'Hello',
    height: 200,
    maximizable:true,
    width: 400
});
w.setTitle("bug-bug");
w.show();


В нем выставлена опция maximizable:true, но если был изменен заголовок окна методом setTitle, то распахнуть такое окно уже не удасться.

Дальше если появляется еще одно окно того же класса, то из первого окна кнопки maximize и close перемещаются в заголовок второго. Правда этот второй глюк воспроизвести не так просто как первый.

Может есть у кого решение первого глюка?

nekto_O 01.03.2013 21:58

до вызова show элемент не отрендерен, видимо поэтому setTitle отрабатывает не так как задумано))

khusamov 01.03.2013 22:02

Да, действительно так и вышло. Выходит надо делать так:

window.show();
window.setTitle(title);
window.hide();

khusamov 01.03.2013 22:04

Нет, не так. Нужно вот так:

if (window.rendered) {
    window.setTitle(title);
} else {
    window.title = title;
}

khusamov 01.03.2013 22:11

В итоге выкрутился так:

/**
 * Хак, исправляющий ошибку, возникающую при попытке 
 * установить заголовок, если объект не отрисован.
 */
Ext.override(Ext.panel.Panel, {
	setTitle: function(newTitle) {
      var me = this;
      if (me.rendered) {
      	me.callParent(arguments);
      } else {
      	me.title = newTitle;
      }
	}
});


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