2013-09-25 2 views
1

Extjs 4.2, Как я могу игнорировать конфигурацию maxHeight при максимизации окна? Я хочу сделать полноэкранное окно.Extjs, Как игнорировать maxHeight при максимальном увеличении окна?

Это мой демонстрационный код в jsfiddle.

http://jsfiddle.net/zbyHY/

Ext.onReady(function() { 
    Ext.create('Ext.window.Window',{ 
     title: 'Hello', 
     maximizable: true, 
     width: 400, 
     height: 300, 
     maxHeight: 350 
    }).show(); 
}); 

ответ

1

Готовы к крупному хаку?

function realMaximize(){ 
    if(this.maxInternal){ 
     return; 
    } 
    if(this.maximized){ 
     this.oldMaxHeight = this.maxHeight; 
     this.maxHeight = undefined; 
     this.maxInternal = true; 
     this.restore(); 
     this.maximize(); 
     this.maxInternal = false; 
    }else{ 
     this.maxHeight = this.oldMaxHeight; 
    } 
} 

Ext.onReady(function() { 
    var w = Ext.create('Ext.window.Window',{ 
     title: 'Hello', 
     maximizable: true, 
     width: 400, 
     height: 300, 
     maxHeight: 350 
    }); 
    w.addListener('maximize',realMaximize); 
    w.show(); 
}); 

ugh! Какой ужас. Что оно делает? Когда он обнаруживает максимизацию, он сохраняет текущую максимальную высоту и удаляет ее. Затем он переключает максимизацию так, чтобы пользовательский интерфейс обновлялся с учетом этого нового максимума (может быть, есть лучший способ?). Наконец, он должен установить и проверить флаг, или он попадет в бесконечный цикл (maximize снова вызывает функцию).

Возвращение к окну не так сложно; запоминаемый размер должен быть ОК, поэтому нам не нужно вызывать функцию рекурсивно.

+0

Обновленная скрипка: http://jsfiddle.net/zbyHY/1/ – Dave

+0

Если кто-нибудь знает, как имитировать изменение размера окна или инициировать обновление размера каким-либо другим способом, это может быть сделано намного чище. – Dave

+0

Неужели я думаю, что должен сообщить об этой проблеме (maxHeight/maximize) в Sencha? или Это (хорошая) функция (maxHeight break maximize)? –

Смежные вопросы