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 相关文章推荐
JS input 数字验证代码
Jul 30 Javascript
json 实例详细说明教程
Oct 31 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
javascript作用域问题实例分析
Jul 13 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 Javascript
浅谈Fetch 数据交互方式
Dec 20 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 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发送get、post请求的6种方法简明总结
2014/07/08 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
2018/07/31 jQuery
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
python实现井字棋游戏
2020/03/30 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
python的mysqldb安装步骤详解
2017/08/14 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
python多线程抽象编程模型详解
2019/03/20 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
教师专业自荐书范文
2014/02/10 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏