我已经阅读了很多有关此内容的帖子,但仍然无法使用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();
}
}
});
答案 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)
setTimeout
和this
你需要这样的东西:
var self = this;
setTimeout(function () { self.panelWin.destroy(); }, 3000);
答案 2 :(得分:0)
除setTimeout()
以外,您可以在特定的时间间隔后使用Ext.TaskMgr
或Ext.util.TaskRunner
执行task
。根据您的需要使用Start
和Stop
方法。