extjs 为某个事件设置拦截器_Javascript教程-查字典教程网
extjs 为某个事件设置拦截器
extjs 为某个事件设置拦截器
发布时间:2016-12-30 来源:查字典编辑
摘要:我们先来自定义一个事件:复制代码代码如下:person=function(name){this.name=name;this.addEven...

我们先来自定义一个事件:

复制代码 代码如下:

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教程学习
    热门Javascript教程学习
    编程开发子分类