作家
登录

extjs 为某个事件设置拦截器

作者: 来源:www.28hudong.com 2013-03-30 01:56:56 阅读 我要评论

我们先来自定义一个事件: 复制代码 代码如下: 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'); }); 当点击按钮时触发事件,效果如下图所示: 现在我们使用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代码 1,首先定义几个自定义函数 代码 复制代码 代码如下: //判断是否为数组 function isArray(v) { return v && typeof v.length == 'number' && typeof v.splice == 'function>>>详细阅读


本文标题:extjs 为某个事件设置拦截器

地址:http://www.17bianji.com/kaifa2/JS/27250.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)