处理组件事件最强大的方式是使用侦听器。事件由组件进行广播,作为侦听器注册到事件广播器(组件实例)的任何对象都会收到该事件的通知。给侦听器分配一个处理事件的函数。您可以向一个组件实例注册多个侦听器。您也可以向多个组件实例注册一个侦听器。
要使用事件侦听器模型,请创建一个侦听器对象,该对象所带的属性应为事件的名称。给该属性分配一个回调函数。接着,对广播事件的组件实例调用 UIEventDispatcher.addEventListener()
方法,并将事件的名称和侦听器对象的名称传递给它。调用 UIEventDispatcher.addEventListener()
方法称为“注册”或“订阅”侦听器,如下所示:
listenerObject.eventName = function(evtObj){ // 此处是您的代码 }; componentInstance.addEventListener("eventName", listenerObject);
在上面的代码中,如果在回调函数中使用关键字 this
,则该关键字的作用范围是 listenerObject
。
evtObj
参数是在触发事件并将其传递到侦听器对象回调函数时自动生成的事件对象。该事件对象的属性包含有关事件的信息。有关详细信息,请参阅UIEventDispatcher 类。
有关组件所广播事件的信息,请参阅组件字典中的每个组件条目。
form = new Object(); form.click = function(evt){ myText.text = evt.target; } button.addEventListener("click", form);
事件对象的目标属性是对广播事件的实例的引用。此代码在文本输入字段显示目标属性的值。