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 相关文章推荐
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
原生javascript获取元素样式
Dec 31 Javascript
javascript中$(function() {});写与不写有哪些区别
Aug 10 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
Jul 08 Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
Aug 01 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
VUE实现可随意拖动的弹窗组件
Sep 25 Javascript
vue路由对不同界面进行传参及跳转的总结
Apr 20 Javascript
JS实现网页烟花动画效果
Mar 10 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
基于PHP文件操作的详解
2013/06/05 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
Vue头像处理方案小结
2018/07/26 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
水电工岗位职责
2014/02/12 职场文书
代理人委托书
2014/08/01 职场文书
新教师培训心得体会
2014/09/02 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
2014年女职工工作总结
2014/11/27 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python