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 相关文章推荐
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
JS 表单验证大全
Nov 23 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 20 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
Sep 02 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
Python re模块介绍
2014/11/30 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
python 实现性别识别
2020/11/21 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
自我鉴定写作要点
2014/01/17 职场文书
小学生打架检讨书
2014/01/26 职场文书
《风娃娃》教学反思
2014/04/19 职场文书
大学生赌博检讨书
2014/09/22 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
毕业生评语大全
2015/01/04 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle