0
我有一个弹出窗口组件,它隐藏文档点击事件的内容。我的逻辑是这样的:Extjs文档点击事件
show : function() {
var me = this;
if (me.visible) {
return;
}
Ext.getDoc().on('click', function handleDocClick(e) {
if (e.within(me.el)) {
return;
}
if (me.isVisible() && !e.within(me.divEl)) {
me.hide();
Ext.getDoc().un('click', handleDocClick);
}
});
var cfg = me.determineLocation();
me.setLocation(cfg);
me.visible = true;
},
hide : function() {
this.visible = false;
.........
},
我有调用popover组件隐藏方法的问题。这样做会使事件无法有效地导致内存泄漏。
我试图改变的情况下这样的结合:
Ext.getDoc().on('click', Ext.bind(this.handleDocClick, this));
和隐藏:
hide : function() {
Ext.getDoc().un('click', Ext.bind(this.handleDocClick, this));
this.visible = false;
.........
},
但这并没有多大帮助的情况下无法正常再放松。
我的问题是如何解决这个问题。最好的解决办法是:在 显示:
Ext.getDoc().un('click', functionClick);
Ext.getDoc().on('click', functionClick);
和隐藏:
Ext.getDoc().un('click', functionClick);
我可以接受在全球范围内,甚至一个函数,但我不知道我怎样才能从对象分发PARAMS实例。
这对他来说将无法正常工作,因为在处理函数中,首先需要确定点击发生的位置,如果它在错误位置点击,则忽略该事件而不是移除该侦听器,但每次发生点击时都会删除单个选项文档中的任何地方,哪个用户绝对不想:) – 2012-03-22 18:20:28
那么为什么不直接将侦听器放在需要隐藏的组件上呢? – dbrin 2012-03-23 02:22:23