ExtJS: проверьте состояние окна (свернуто, развернуто и т. Д.)

ExtJS предоставляет ряд конфигураций относительно того, настроено ли окно как развернутый, минимизируемый и т. д. Он также предоставляет функции для максимизировать и свернуть окно.

Однако не могу найти правильный способ получить текущее состояние окна. Мне нужны функции, подобные приведенным ниже:

var myWin = Ext.create('Ext.window.Window', { ... });
...
myWin.isMinimized(); // is current window minimized?
myWin.isMaximized(); // is current window maximized?

Можно ли получить текущее состояние окна из экземпляра окна?


person Joseph Victor Zammit    schedule 04.03.2013    source источник


Ответы (3)


Для _1 _ есть логическое свойство maximized, которое вы можете взять из объекта:

if (myWin.maximized) { ... }

Однако для _4 _ ExtJS не предоставляет никакой функциональности и ожидает индивидуальной реализации. Следовательно, из коробки не поддерживается какое-либо свойство minimized.

person VisioN    schedule 04.03.2013

Ответ @ VisioN уже готов, но я хочу показать вам фрагмент с использованием _ 1_, чтобы скрыть окно:

Ext.create('Ext.Window',{
    height: 100,
    width: 100,
    minimizable: true,
    listeners: {
        minimize: function(){
            var win = this;
            win.toggleCollapse();
            if (!win.getCollapsed()) {
                win.center();
            } else {
                win.alignTo(document.body, 'bl-bl');
            }
        }
    }
}).show();
person A1rPun    schedule 04.03.2013
comment
что такое toggleCollapse()? это дает мне ошибку. Если он определен пользователем, пожалуйста, предоставьте для него код. - person Raza Ahmed; 07.09.2013
comment
Какую версию ExtJ вы используете? Доступно с: 2.3.0 - person A1rPun; 09.09.2013

Одно из решений для всех, кто ищет, вместо использования minimizable config используйте tools. Вот полный пример ..

var isMinimized = false;   //if you want to check for minimized elsewhere..
var winWidth;          //to restore to actual width.
Ext.create('Ext.window.Window', {
    title: 'Hello',
    closable : false,
    width : 300, height : 400,
     tools: [
                {  
                    type: 'restore',
                    hidden : true,
                    handler: function( evt,toolEl,owner,tool ) {
                        var window = owner.up( 'window' );
                        window.expand('',false);
                     window.setWidth(winWidth);
                        window.center();
                        isMinimized = false;
                        this.hide();
                        this.nextSibling().show();
                    }                                
                },{  
                    type: 'minimize',
                    handler: function( evt,toolEl,owner,tool ){
                        var window = owner.up( 'window' );
                        window.collapse();
                        winWidth = window.getWidth();
                        window.setWidth( 150 );
                        window.alignTo( Ext.getBody(), 'bl-bl');
                        this.hide();
                        this.previousSibling().show();
                        isMinimized = true;
                    }                                
                }                            
            ]
}).show();
person Raza Ahmed    schedule 07.09.2013
comment
Это действительно хорошее решение. Что произойдет, если вы не захотите перекрывать друг друга при сворачивании разных окон? - person Aebsubis; 28.03.2014