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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
利用javascript查看html源文件
Nov 08 Javascript
斜45度寻路实现函数
Aug 20 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
IE10中flexigrid无法显示数据的解决方法
Jul 26 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
Mar 22 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
JavaScript基础重点(必看)
Jul 09 Javascript
js实现自定义进度条效果
Mar 15 Javascript
PostgreSQL Node.js实现函数计算方法示例
Feb 12 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python编码类型转换方法详解
2016/07/01 Python
python中partial()基础用法说明
2018/12/30 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
歼十出击观后感
2015/06/11 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
MySQL数据库之存储过程 procedure
2022/06/16 MySQL