ExtJS3.4:几秒后自动关闭窗口

时间:2013-01-09 10:54:28

标签: javascript extjs settimeout

我已经阅读了很多有关此内容的帖子,但仍然无法使用settimeout。我怀疑这是因为代码中的“this”,可能是因为本地/全局变量范围。如何设置正确的settimeout以在ext.window 3秒后关闭?,谢谢,请帮助

action = new Ext.Action({
    handler: function(){
        if (this.pressed){
            if (!this.panelWin){
                this.panelWin = new Ext.Window({
                    border: false,
                    resizable: false,
                    draggable: false,
                    closable: false,
                    layout: 'fit',
                    autoWidth: true,
                    autoHeight: true,
                    items: [newPanel],
                    listeners:{
                        show: function() {
                            setTimeout("this.panelWin.destroy()", 3000);
                        }
                    }
                });
            }
            this.panelWin.show();
            }
            else
            {
            this.panelWin.hide();
            }
       }
});

3 个答案:

答案 0 :(得分:3)

试试这个:

this.panelWin = new Ext.Window({
                    border: false,
                    resizable: false,
                    draggable: false,
                    closable: false,
                    layout: 'fit',
                    autoWidth: true,
                    autoHeight: true,
                    items: [newPanel],
                    listeners:{
                        show: function() {
                            var self = this;
                            setTimeout(function() {
                                self.destroy()
                            },3000);
                        },
                        scope: this
                    }
                });

答案 1 :(得分:1)

setTimeoutthis你需要这样的东西:

var self = this;
setTimeout(function () { self.panelWin.destroy(); }, 3000);

答案 2 :(得分:0)

setTimeout()以外,您可以在特定的时间间隔后使用Ext.TaskMgrExt.util.TaskRunner执行task。根据您的需要使用StartStop方法。

Ext.util.TaskRunner

Ext.TaskMgr