0

私はこれについて多くの投稿を読みましたが、それでもsettimeoutは機能しません。これはコードの「this」が原因であり、おそらくローカル/グローバル変数のスコープが原因であると思われます。ext.windowの3秒後に閉じるようにsettimeoutを正しく設定するにはどうすればよいですか?

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.TaskMgrExt.util.TaskRunnertaskStartStop

Ext.util.TaskRunner

Ext.TaskMgr

于 2013-01-09T11:34:32.857 に答える