0

我定义了一个像http://jsfiddle.net/KABQD/
这样的窗口这是我的窗口

Ext.define('MyWindow', {
    extend: 'Ext.window.Window',
    title: 'window',   
    width:200,
    height:100,

    modal:true,
    closable:false,
    tbar: [{    
        text:'hide',
        handler:function(){
            this.up('window').hide();
        }
    }]
});

还有一个按钮。如果单击按钮,我的窗口将被创建并首次显示。如果再次单击按钮,则会显示窗口。但是当我使用 Messagebox 时它失败了。
怎么解决 谢谢


这是我的按钮

Ext.create('Ext.Button', {
    text: 'Click me',
    visible: false,
    renderTo: Ext.getBody(),
    handler: function() {
        var x = 0;
        Ext.WindowManager.each(function(win) {
            x = 1;
            win.show();
        });
        if (x == 0){
            // if don't use MessageBox then will working
            Ext.MessageBox.show({ 
                msg: 'wait...', 
                progressText: 'Loading...', 
                width:300, 
                wait:true, 
                waitConfig: {interval:200}
            });
            //Ext.Ajax.request({
                //url : 'example.php'
                //,success: function(response, opts) {
                    var a = new MyWindow();
                    a.show();
                    Ext.MessageBox.hide();  
                //}
            //});
        }
    }
});
4

1 回答 1

0

问题是WindowManager看不到你的对象。您应该使用 id 实例化您的 MyWindow 对象,就像这样new MyWindow({id: 'NewWindow'});然后您可以捕获您的对象WindowManager并调用该show()方法。

工作示例:http: //jsfiddle.net/A92yN/3/

完整代码:

Ext.define('MyWindow', {
    extend: 'Ext.window.Window',
    title: 'window',   
    width:200,
    height:100,

    modal:true,
    closable:false,
    tbar: [{    
        text:'hide',
        handler:function(){
            this.up('window').hide();
        }
    }]
});
Ext.onReady(function () {
      Ext.create('Ext.Button', {
        text: 'Click me',
        visible: false,
        renderTo: Ext.getBody(),
        handler: function() {
            var x = 0;
            Ext.WindowManager.each(function(win) {
                x = 1;
                var win = Ext.getCmp('NewWindow');
                win.show();
            });
            if (x == 0){
                // if don't use MessageBox then will working
                Ext.MessageBox.show({ 
                    msg: 'wait...', 
                    progressText: 'Loading...', 
                    width:300, 
                    wait:true, 
                    waitConfig: {interval:200}
                });
                //Ext.Ajax.request({
                    //url : 'example.php'
                    //,success: function(response, opts) {
                        var a = new MyWindow({id: 'NewWindow'});
                        a.show();
                        Ext.MessageBox.hide();  
                    //}
                //});
            }
        }
    });
});
于 2013-08-03T20:36:20.343 回答