extjs 为某个事件设置拦截器


Posted in Javascript onJanuary 15, 2010

我们先来自定义一个事件:

person = function(name) { 
this.name = name; 
this.addEvents("walk"); 
} 
Ext.extend(person, Ext.util.Observable, { 
info: function(event) { 
return this.name + 'is' + event + 'ing.'; 
} 
}); 
var person = new person('张铭诺'); 
person.on('walk', function() { 
Ext.Msg.alert('event', person.name + '在走啊走啊。'); 
});

然后我们再定义一个按钮用来触发这个walk事件:
var btn = new Ext.Button({ 
id: 'walk', 
text: '触发事件按钮', 
renderTo: Ext.getBody() 
}); 
btn.on('click', function() { 
person.fireEvent('walk'); 
});

当点击按钮时触发事件,效果如下图所示:
extjs 为某个事件设置拦截器
现在我们使用capture()函数拦截事件的触发,如下面的代码所示:
var btn2 = new Ext.Button({ 
id: 'cc', 
text: '拦截事件', 
renderTo: Ext.getBody() 
}); 
btn2.on('click', function() { 
Ext.util.Observable.capture(person, function() { 
alert('fsdjhf'); 
return true; 
}); 
});

这时单击btn2按钮,发现弹出对话框后还会触发事件,郁闷。。。。现在将最后一行代码改为return false试试?事件被拦截成功了吧!

这样就给我们一个选择的机会,通过控制capture()中处理函数的返回值来决定是否继续执行某个时间的监听函数,还是直接中止该事件的发生。

我们还可以为一个对象设置多个capture()拦截函数,这些拦截函数会形成一个处理链条,只要其中任何一个拦截函数返回false,就会中止处理过程。

releaseCapture()函数是capture()函数的反向操作,它会一次性清除fireEvent()上所有的拦截函数,不过我们无法通过它准确的删除某一个拦截函数。一旦执行了releaseCapture(),那么之前设置的所有拦截函数就都失效了。

Javascript 相关文章推荐
iframe的onreadystatechange事件在firefox下的使用
Apr 16 Javascript
JavaScript中reduce()方法的使用详解
Jun 09 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
Mar 13 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
JavaScript实现原型封装轮播图
Dec 27 Javascript
JavaScript 数组去重详解
Sep 15 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
Jan 15 #Javascript
javascript 不间断的图片滚动并可点击
Jan 15 #Javascript
Span元素的width属性无效果原因及解决方案
Jan 15 #Javascript
javascript实现的基于金山词霸网络翻译的代码
Jan 15 #Javascript
JQuery 引发两次$(document.ready)事件
Jan 15 #Javascript
用jQuery扩展自写的 UI导航
Jan 13 #Javascript
jQuery的一些特性和用法整理小结
Jan 13 #Javascript
You might like
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
php use和include区别总结
2019/10/13 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
简单了解python元组tuple相关原理
2019/12/02 Python
Python如何绘制日历图和热力图
2020/08/07 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
业务副厂长岗位职责
2014/01/03 职场文书
写给老婆的检讨书
2014/02/21 职场文书
工作睡觉检讨书
2014/02/25 职场文书
《春笋》教学反思
2014/04/15 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
人事专员岗位职责
2015/02/03 职场文书
女儿满月酒致辞
2015/07/29 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android