2

我在状态栏中设置了一个计时器。但问题是当我关闭窗口时,它会发现错误。我如何在 extjs 4 中没有任何错误地关闭窗口............

这是我的看法。有用

    var  clock = Ext.create('Ext.toolbar.TextItem', { text: Ext.Date.format(new Date(), 'g:i:s A')}),   


    this. bbar= Ext.create('Ext.ux.StatusBar', {
        id: 'win-statusbar',
        topBorder:false,
        text:'Status',
        defaultIconCls: 'info',
        defaultText: 'Status',
        items: [clock]
        });

     this.listeners= {
        render: {
            fn: function(){                 
            var task= Ext.TaskManager.start({
                 run: function(){
                     Ext.fly(clock.getEl()).update(Ext.Date.format(new Date(), 'g:i:s A'));
                 },
                 interval: 1000
             });
           }
        }
    };

控制器。如何在关闭窗口之前在此处设置“Ext.TaskManager.stop()”。

doClose: function (button) {
    var win = button.up('window');
    win.close();
}

错误

Ext.fly(clock.getEl()) is null 
4

2 回答 2

4

最后我解决了。我只是通过单击关闭按钮执行操作。

 this.listeners= {
        render: {
            fn: function(){                 
            var task= Ext.TaskManager.start({
                 run: function(){
                     Ext.fly(clock.getEl()).update(Ext.Date.format(new Date(), 'g:i:s A'));
                 },
                 interval: 1000
             });

             Ext.get('stop').on('click', function() {  //by close button id= 'stop'
                  Ext.TaskManager.stop(task);            
             }); 
           }
        }
    };
于 2012-12-04T11:07:45.440 回答
3

这会奏效。

this.listeners= {
        render: {
            fn: function(){                 
            var task= Ext.TaskManager.start({
                 run: function(){
                     if(!Ext.fly(clock.getEl()))
                        Ext.TaskManager.stop(task);
                     Ext.fly(clock.getEl()).update(Ext.Date.format(new Date(), 'g:i:s A'));
                 },
                 interval: 1000
             });
           }
        }
    };
于 2012-12-03T19:34:50.090 回答