Flex this
为了便于对比和叙述,我们先上一段最简单的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>
最新文章
- 去除html的&;nbsp;标签
- HTML5-链接
- javascript 中concat与push的区别
- ThinkPad New X1 Carbon中关闭任务栏上的触摸键盘
- 解决kernel headers报错
- 【最短路】【数学】CSU 1806 Toll (2016湖南省第十二届大学生计算机程序设计竞赛)
- 学习zepto.js(原型方法)
- CSS3阴影 box-shadow的使用和技巧总结[转]
- 使用C#对MongoDB中的数据进行查询,改动等操作
- 使用mysql-mmm实现MySQL高可用集群
- 使用WSE实现Web Service安全----我的第一篇
- Java数据结构和算法 - 栈和队列
- ubuntu16.04下sublime text3安装和配置
- Web前端框架与移动应用开发第七章
- http协议基本原理
- 5、redis之使用spring集成commons-pool
- 算法提炼是落脚点-php数组-字符串函数
- python 获取指定文件夹的大小
- 注册COM
- MT【132】倒序相加因式分解
热门文章
- Struts2+DAO层实现实例03——添加监听器跟踪用户行为
- 基于linux操作系统安装、使用redis详解
- java.net.SocketException: recvfrom failed: EBADF (Bad file descriptor)
- [codeforces] 25E Test || hash
- P1494 [国家集训队]小Z的袜子/莫队学习笔记(误
- 动态MST
- js常用数组去重
- Tomcat学习笔记(五)
- vue(三)
- C语言浮点数存储方式