关闭窗口时如何关闭计时器

时间:2012-12-01 03:37:51

标签: extjs extjs4

我在状态栏中设置了一个计时器。但问题是,当我关闭窗口时,它会发现错误。如何在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 

2 个答案:

答案 0 :(得分: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);            
             }); 
           }
        }
    };

答案 1 :(得分: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
             });
           }
        }
    };