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 相关文章推荐
jQuery插件Skippr实现焦点图幻灯片特效
Apr 12 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
Dec 04 Javascript
无缝滚动的简单实现代码(推荐)
Jun 07 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
创建一般js对象的几种方式
Jan 19 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
微信小程序select下拉框实现源码
Nov 08 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
Jan 17 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 Javascript
JavaScript缓动动画函数的封装方法
Nov 25 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
javascript控制台详解
2015/06/25 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python中转换角度为弧度的radians()方法
2015/05/18 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
建筑专业自荐信范文
2014/01/05 职场文书
出纳员岗位责任制
2014/02/11 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
安全环保标语
2014/06/09 职场文书
教师师德考核自我评价
2014/09/13 职场文书
自我检讨书怎么写
2015/05/07 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server