DataBinding中get,set方法的使用

DataBinding是Flex 中基础却强大的特性,而在Flex 4里面,更增加2-way binding,让这属性的使用更加方便,但刚开始的时候还是需要时间去学习这个新的概念。

 

DataBinding最简单的方式无疑是:

 

[Bindable] public var txt:String;

但这种方法往往满足不了较复杂的赋值要求,所以我们更多的会看到这种方式:[Bindable] public function get txt():String { return _txt; } public function set txt(value:String):void { _txt = value; }

flex对以上两种写法的实现是没有区别的,就第一种而言,flex的编译器还是会为其先产生get,set方法,并为其指定一个随机Trigger Event,然后set 方法的末端插入dispatchEvent的语句。而所有绑定到这个变量的目标都会listen住这个Event,一旦这个Event发生,就会调用这个变量的get method,重新赋值。

 

使用时注意以下几种情况

[Bindable(event="valueChange")]// 指定Trigger Event,而不是由编译器随机指定 public function get txt():String { return _txt; } public function set txt(value:String):void { _txt = value; //失败,编译器不再自动插入dispatchEvent语句 }

 

[Bindable(event="valueChange")]// 指定Trigger Event,而不是由编译器随机指定 public function get txt():String { return _txt; } public function set txt(value:String):void { _txt = value; dispatchEvent(new Event("valueChange"));//成功,必须自己分发这个Trigger Event }

 

[Bindable(event="valueChange")]// 指定Trigger Event,而不是由编译器随机指定 public function get txt():String { return _txt; } public function set txt(value:String):void { _txt = value; dispatchEvent(new KeyboardEvent("valueChange"));//成功,Event的Class Type并不影响 }

 

[Bindable(event="valueChange")] public function get txt():String { return _txt; } public function set txt(value:String):void { _txt = value; dispatchEvent(new Event("change"));//失败,EventType String必须对应 }

你可能感兴趣的:(function,String,Flex,Class,编译器,binding)