ExtJS里handler和listener都是用来对用户的某些输入进行处理的,有必要区分一下各自都是怎么用的。
Handler
handler与Act
Act
component的构建方式比较有意思:
new Ext.Button(act
是Button接收一个Act
其他属性不考虑,看handler,Button中的handler配置项文档说明,这个handler是与click Event关联的。也就是说,click是Button这个Component的首要Event(参考Act
Listener
上面说了handler是对首要Event的响应函数,而关于Event, Observable才是根源。
Ext.util.Observable是一切可进行事件监测之对象的父类(或者接口)。Observable只有一个配置项,那就是listeners,而一个listener是一个事件名 + 处理函数的组合,如:
"click" : function(){...}, "mouseOver" : function(){....}
Observable还提供了很多相关的处理事件的方法,比如添加事件,触发事件,移除监听器等等。
由上分析可以总结一下:
1、handler是一个特殊的listener;
2、handler是一个函数,而listener是<event , 函数>对;
3、handler与Act
但是handler与普通的event + listener组合还是有一些不同,一个例子就是,如果用
Ext.util.Observable.capture(button, function(name){ if (name=="click") return false})
来事先捕获click事件,并阻止click时,如果Button的click是通过handler来响应的,则capture的return false函数无效,而如果button是定义了包含click事件的listener,则上面的capture生效。
http://blog.csdn.net/smilingleo/archive/2009/01/08/3733177.aspx