1.13.组件属性绑定

1.13.1.问题
我创建的组件中想让其属性是可绑定的,可绑定到其他组件上。
1.13.2.解决办法
创建getter和setter方法,用metadata标签把这些方法标记为Bindable,元数据标签里还包含当属性被设置时其方法所发出的事件名称。
1.13.3.讨论
当属性值发生改变时,在属性上添加Bindable元数据标签,发出相应事件,任何对象都可以被定义为可绑定属性。最佳方法就是通过get和set函数定义这些绑定属性。当属性被设置时,一个名称和Bindable标签一样的事件发出,例如:
+展开
-ActionScript
package oreilly.cookbook {
import flash.events.EventDispatcher;
import flash.events.Event;
public class Person extends EventDispatcher {
public static var NAME_CHANGE:String = "nameChange";
private var _name:String;
[Bindable (event=NAME_CHANGE)]
public function get name():String {return _name;}
public function set name(value:String):void{
dispatchEvent(new Event(NAME_CHANGE));
_name = value;
}
}
}

Bindable标签需要属性被设置时所发出的事件名称,下面确认当Person对象的name属性值发生改变时任何绑定的组件都能被通知到。

现在绑定属性被设置为Person对象,你可以在绑定表达式中使用任意Person实例:
+展开
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:Script>
<![CDATA[
[Bindable ]
private var _person:Person;
public function set person(person:Person:void{_person = person;}

]]>
</mx:Script>
<mx:Label text="{_person.name}"/>
</mx:Canvas>

加支付宝好友偷能量挖...


评论(0)网络
阅读(99)喜欢(0)flash/flex/fcs/AIR