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定时器完整实例
Feb 10 Javascript
Javascript中this关键字的一些小知识
Mar 15 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
json的使用小结
Jun 08 Javascript
一个简单的JavaScript Map实例(分享)
Aug 03 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 Javascript
JS之获取样式的简单实现方法(推荐)
Sep 13 Javascript
Vue-Access-Control 前端用户权限控制解决方案
Dec 01 Javascript
vue.js指令v-for使用以及下标索引的获取
Jan 31 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
微信小程序实现多选框功能的实例代码
Jun 24 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比较两个字符串长度的方法
2015/07/13 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
详解webpack模块加载器兼打包工具
2018/09/11 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
python @classmethod 的使用场合详解
2019/08/23 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
金融专业应届生求职信
2013/11/02 职场文书
保护环境倡议书300字
2014/05/19 职场文书
三方股份合作协议书
2014/10/13 职场文书
会计试用期自我评价
2015/03/10 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
中秋晚会致辞
2015/07/31 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
Python开发五子棋小游戏
2022/05/02 Python