我有一个约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()会自动销毁所有引用?
谢谢。