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
JS版网站风格切换实例代码
Oct 06 Javascript
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
Jul 25 Javascript
js遍历获取表格内数据的方法(必看)
Apr 06 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
Vue父子组件之间的通信实例详解
Sep 28 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 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 缓存函数代码
2008/08/27 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
关于js类的定义
2011/06/28 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
Javascript技术难点之apply,call与this之间的衔接
2015/12/04 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
JS常见构造模式实例对比分析
2018/08/27 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python实现中文转换url编码的方法
2016/06/14 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
对Django url的几种使用方式详解
2019/08/06 Python
python内存管理机制原理详解
2019/08/12 Python
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
出纳岗位职责范本
2013/12/01 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
单位工作证明书格式
2014/10/04 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
干部理论学习心得体会
2016/01/21 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书