Extjs 4.2:' hasListeners' Ext Component的特性(面板)

时间:2016-04-07 08:43:16

标签: extjs extjs4.2

我有一个约10项的面板。对于我已实现的所有项目"渲染后#34;每个项目的各个控制器中的事件处理程序。

这就是我在Controller的init方法中注册后续事件的方法:

init: function() {
    this.control({
        '#myFirstPanel': {
          afterrender: this.afterrender
        }
    });
}

我的面板代码如下:

Ext.define('App.view.popUpWindow', {
    extend: 'Ext.panel.Panel',

    initComponent: function(){
        this.callParent();
    },       
    id: 'popup',    
    layout: 'fit',    
    items: [
    {
        xtype: 'panel'
        items: [    
            {
                // One of my custom component
                xtype:'FirstGrid'
            }....//10 items in total                
       ]
    }]
});

在我的应用加载后,通过以下代码获取面板对象的hasListeners属性

Ext.getCmp('popup').hasListeners

它返回给我这个对象

  

{afterrender:10,tabchange:1}

现在我用这个命令摧毁我的面板

Ext.getCmp('popup').destroy()

再次打开我的应用程序(我的应用程序是另一个Extjs应用程序的子Extjs应用程序)

Ext.getCmp('popup').hasListeners

它返回给我这个对象

  

{afterrender:20,tabchange:2}

我的问题是,为什么即使在调用 destroy()之后,hasListeners仍然是如何保留旧监听器的记录?我知道这个对象没有显示监听器的数量(我读api)但是接下来会发生什么?

有人可以向我解释一下吗?因为我必须手动删除旧的侦听器(我的other question关于此),为什么不.destroy()会自动销毁所有引用?

谢谢。

0 个答案:

没有答案