0

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

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

3 回答 3

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
                    }
                });
于 2013-01-09T10:59:10.177 回答
1

和你需要这样的东西setTimeoutthis

var self = this;
setTimeout(function () { self.panelWin.destroy(); }, 3000);
于 2013-01-09T10:57:47.243 回答
0

除了setTimeout(),您可以使用Ext.TaskMgr或在特定时间间隔后Ext.util.TaskRunner执行。根据您的需要task使用Start和方法。Stop

Ext.util.TaskRunner

分机任务管理器

于 2013-01-09T11:34:32.857 回答