为了便于对比和叙述,我们先上一段最简单的js+html代码:
<input type="button" value="test" id="htmBtn" onclick="alert(this.id)">
用惯js+html的程序员都知道,这里的this指向触发事件的html组件本身,所以this.id将如愿显示为”htmBtn”。

但是在flex3中,你写事件侦听函数时,this关键字将指向application,而不再指向触发事件本身的组件上了(与js+html完全不同):

例如:

<mx:ComboBox name="ttt"  change="Alert.show('you have change the data!'+this.selectedLabel)">
<mx:dataProvider>
<mx:String>Dogs</mx:String>
<mx:String>Cats</mx:String>
<mx:String>Mice</mx:String>
</mx:dataProvider>
</mx:ComboBox>

中的this.selectedLabel将找不到任何东东。因为this并没有指向这个combobox!!!

那么怎么找到触发事件的组件呢?flex提供了event.currentTarget来指定触发事件的当前组件,如下方式:

<mx:ComboBox name="ttt"  change="Alert.show('you have change the data!'+event.currentTarget.selectedLabel)">
<mx:dataProvider>
<mx:String>Dogs</mx:String>
<mx:String>Cats</mx:String>
<mx:String>Mice</mx:String>
</mx:dataProvider>
</mx:ComboBox> 
或者:<mx:Script><![CDATA[
private function changeEvt(e:Event):void {
Alert.show('you have change the data!'+e.currentTarget.selectedLabel)"
}
]]></mx:Script>

<mx:ComboBox name="ttt"  change="changeEvt(event)"><mx:dataProvider>
<mx:String>Dogs</mx:String>
<mx:String>Cats</mx:String>
<mx:String>Mice</mx:String>
</mx:dataProvider>
</mx:ComboBox>

官方文档还提出了特别说明,使用event.currentTarget时有一个好习惯可以参考,即,最好先指定好该组件的类型,例如 TextInput(e.currentTarget),这样做的目的是防止由于该组件某个属性不存在时,编译时不报错而运行时才报错,看代码就明白了:

<?xml version="1.0"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script><![CDATA[

import mx.core.UIComponent;

private function tiHandler(e:Event):void {

/* 
这段代码将会在运行时报错,而编译时不报错。因为TextInput根本没有tmesis属性
e.currentTarget.tmesis = 4;
*/

/*
这段代码的用法,就能在编译时便发现错误,不用等到运行时才报错
TextInput(e.currentTarget).tmesis = 4;
*/

}

]]></mx:Script>

<mx:TextInput id="ti1" click="tiHandler(event)"

text="This is some text. When you click on this control, the first three characters

are selected."/>

</mx:Application>

最新文章

  1. 去除html的&amp;nbsp;标签
  2. HTML5-链接
  3. javascript 中concat与push的区别
  4. ThinkPad New X1 Carbon中关闭任务栏上的触摸键盘
  5. 解决kernel headers报错
  6. 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)
  7. 学习zepto.js(原型方法)
  8. CSS3阴影 box-shadow的使用和技巧总结[转]
  9. 使用C#对MongoDB中的数据进行查询,改动等操作
  10. 使用mysql-mmm实现MySQL高可用集群
  11. 使用WSE实现Web Service安全----我的第一篇
  12. Java数据结构和算法 - 栈和队列
  13. ubuntu16.04下sublime text3安装和配置
  14. Web前端框架与移动应用开发第七章
  15. http协议基本原理
  16. 5、redis之使用spring集成commons-pool
  17. 算法提炼是落脚点-php数组-字符串函数
  18. python 获取指定文件夹的大小
  19. 注册COM
  20. MT【132】倒序相加因式分解

热门文章

  1. Struts2+DAO层实现实例03——添加监听器跟踪用户行为
  2. 基于linux操作系统安装、使用redis详解
  3. java.net.SocketException: recvfrom failed: EBADF (Bad file descriptor)
  4. [codeforces] 25E Test || hash
  5. P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
  6. 动态MST
  7. js常用数组去重
  8. Tomcat学习笔记(五)
  9. vue(三)
  10. C语言浮点数存储方式