ExtJS:检查窗口状态(最小化,最大化等)

时间:2013-03-04 10:30:40

标签: javascript extjs extjs4.1

ExtJS提供了一些关于Window是否配置为的配置 maximizedminimizable等。它还为maximizeminimize提供了一个窗口的功能。

无法找到获取现有窗口状态的正确方法。我需要的是类似下面的功能:

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

可以从窗口实例中检索当前窗口的状态吗?

3 个答案:

答案 0 :(得分:3)

对于maximize(),您可以从对象中获取布尔属性maximized

if (myWin.maximized) { ... }

然而对于minimize(),ExtJS不提供任何功能,并且需要单独实现。因此,框中不支持任何minimized属性。

答案 1 :(得分:1)

@VisioN的答案已经完成,但我想用toggleCollapse()向您展示隐藏窗口的代码段:

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();

答案 2 :(得分:1)

对于任何寻找而不是使用minimizable配置的人来说,使用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();