FLEX元标签_Bindable

1 概述
       [Bindable]是元标签,元标签不是语法的一部分,而是专门给编译器用的,是告诉编译器做某些事情。
       [Bindable]的作用是:告诉 flex编译器给某些某些东西建立绑定关系

       当你在没有添加事件设置的情形下使用 Bindable 标记时,propertyChange 是将被下发的默认事件类型。 因此,[Bindable] 标记等同于 Bindable(event="propertyChange")或[Bindable("propertyChange")]。

下面的代码

[Bindable]
public var testData:String;
由于没有设置事件名称,编译器将创建下列代码:
[Bindable(event="propertyChange")]

public function get testData():String
{
   return this._1147269284testData;
}

public function set testData(value:String):void
{
   var oldValue:Object = this._1147269284testData;

   if (oldValue !== value) {
      this._1147269284testData = value;
      if (this.hasEventListener("propertyChange"))
         this.dispatchEvent(mx.events.PropertyChangeEvent.createUpdateEvent
         (this, "testData", oldValue, value));
      }

}

2 Bindable使用方式
2.1 在public class定义前
       [Bindable]元数据标签绑定所有的作为变量定义的public属性,并且所有的public属性都定义有getter和setter方法。在这种情况下,[Bindable]没有参数,例如:
[Bindable]
public class TextAreaFontControl extends TextArea {

}
       flex编译器自动创建一个事件名叫propertyChange用于所有的公有属性,这些属性可以作为绑定表达式的源。这种定义等同于
       [Bindable(event="propertyChange")]

       如果属性值的改变与原来相同,flex并不传递这个事件或更新属性。

2.2 在类的属性之前
       格式为:
[Bindable]
public var foo;

2.3 在属性的getter或setter方法之前
       必须同时定义getter和setter方法
[Bindable]

public function get shortNames():Boolean {
    ...
}

public function set shortNames(val:Boolean):void {
    ...
}

2.4 使用自定义事件
使用自定义的事件名,如:
[Bindable(event="changeShortNames")]

public function set shortNames(val:Boolean):void {
    ...
    // Create and dispatch event.
    dispatchEvent(new Event("changeShortNames"));
}

// Get method.
public function get shortNames():Boolean {
    ...
}

参考文献
1.Flex 2 中的元数据标签. http://www.iteye.com/topic/152024
2.如何使变量进行Flex数据绑定. http://developer.51cto.com/art/201007/215153.htm

你可能感兴趣的:(Flex)