Extjs文档点击事件
Extjs document click event
我有一个popover组件,它在文档单击事件中隐藏其内容。我的逻辑是这样的:
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组件hide方法时遇到问题。这样做会使事件处于未缠绕状态,从而导致内存泄漏。
我试着这样更改事件绑定:
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。
我不确定你所说的放松是什么意思,但听起来你试图执行一次这个事件,然后删除监听器。在这种情况下,ExtJS observable API为您的听众提供了选项:
single:布尔
True可添加一个处理程序来处理事件的下一次激发,并且然后将其自身移除。http://docs.sencha.com/ext-js/4-0/#/api/Ext.util.Observable-方法
希望这正是你所需要的。
相关文章:
- 来自文档或下一个静态父级的事件委派
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- 将事件发送到javascript文档的react本机模块是否正确
- 枚举附加到文档的HTML对象的所有事件
- 在文档加载Tampermonkey时单击事件激发
- 无法使用JavaScript从iTextSharp访问PDF文档页面/事件
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 如何编写单个 Jquery 函数以在文档更改和就绪事件时触发
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 指定父文档按钮点击事件来自Angular JS中的子文档控制器
- 按标记名称将事件侦听器添加到所有文档子项
- 单击文档时的Backbone JS事件
- 在文档就绪时触发更改事件
- 在javascript中阻止文档执行默认操作时,在单个元素中使用默认事件
- 为什么在jQuery中将事件注册到文档中是一种糟糕的做法
- RxJs如何处理文档事件
- 如何在JQuery中取消文档中的一些点击事件(并非全部)
- JQuery事件$(文档).ready不能在IPhone 5上运行移动safari