Ext JS事件(三)

一、自定义事件

    EXT中遵循一种树状的事件模型,所有继承自Ext.util.Observable类的控件都可以支持事件。可以为这些继承了Ext.util.Observable的对象定义一些事件,然后为这些事件配置监听器。当某个事件被触发时,EXT会自动调用对应的监听器,这些就是EXT的事件模型。

    下面通过继承Ext.util.Observable来实现一个支持事件的对象,实现过程如代码清单2.1所示:

(1)实现一个名称为Person的对象,它有一个属性name。初始化时,调用this.addEvents()函数定义了3个事件:walk、eat和sleep,最后使用Ext.extend()让Person继承Ext.util.Observable的所有属性。函数info():可以返回Person的信息。

    Ext JS事件(三)_第1张图片

(2)在HTML中创建一个Person的实例,然后为它的事件配置好监听器,如代码清单2-2所示:

Ext JS事件(三)_第2张图片注:代码中的on()是addListener()的简写形式,功能完全一样。第一个参数传递事件名称,第二个参数是事件发生时执行的函数。

(3)当这些事件被触发时就可以看到效果了。为了便于控制,设置3个按钮,当按钮按下时,就触发相应的事件,然后就会调用fireEvent()触发事件,传入一个事件名称作为参数,该事件对应的监听函数就会执行,如代码清单2-3所示:

Ext JS事件(三)_第3张图片

注:如果想给监听方法传递参数,直接把参数写到fireEvent()里就行了,不用管参数数量,也不用管参数类型(字符串、数字、日期、数组等)。但是需要保证监听函数可以处理传递过去的参数。如果监听函数需要某个参数,触发事件时却忘了传递过去,这时就会报告错误。这种因为动态语言的特性而导致的非直观错误非常难以查找。

二、浏览器事件

    浏览器事件即传统意义上的鼠标单击、移动等事件,这些事件是由浏览器根据用户动作触发的,与页面元素紧密相关。EXT使用Ext.EventManager、Ext.EventObject和Ext.lib.Event对原生浏览器事件进行了封装,最后展现在我们面前的就是

转载于:https://my.oschina.net/tobeexpertismydream/blog/2990374

你可能感兴趣的:(Ext JS事件(三))