本文和大家重点讨论一下Flex数据绑定,当一个变量标记为可绑定后,其它对象就可以修改该变量的其它目的属性的值。将一个变量上进行Flex数据绑定,你必须使用下面三种方式中的一种来定义[Bindable]标记。
Flex数据绑定
有关Flex数据绑定的知识收集整理了一下:
Flex数据绑定使得在应用程序中不同的层间传递数据的变得简单和方便,通过将源属性与目标属性进行关联来实现。当源属性的值有更新时,会产生一个事件来通知目的属性来进行更新。
当一个变量标记为可绑定后,其它对象就可以修改该变量的其它目的属性的值。将一个变量上进行Flex数据绑定,你必须使用下面三种方式中的一种来定义[Bindable]标记。
◆在一个类的定义之前
- packagecom.oreilly.flexcookbook
- {i
- importflash.events.EventDispatcher;
- [Bindable]
- publicclassDataObjectextendsEventDispatcher{}
- }
◆在一个类创建之前添加[Bindable]标记创建一个绑定的表达式从而使得类的所有共有属性变得可以绑定。所有可以绑定的类必须由IEventDispatcher类实现,因为Flex数据绑定是基于事件驱动,来复制源数据到目的数据。
.在变量的前面进行声明
- [Bindable]privatevar_lastName:String;
- [Bindable]protectedvar_age:Number;
- [Bindable]publicvarfirstName:String;
声明为私有的变量标记为可绑定时,则只能在类中进行绑定。保护的变量则只能在继承或者类本身可见。而共有变量都可见。
◆在属性的前面通过隐含的getter/setter方法来变向的进行绑定:
- privatevar_lastName:String;
- ...
- [Bindable]
- publicfunctiongetlastName():String
- {
- return_lastName;
- }p
- publicfunctionsetlastName(str:String):void
- {_
- lastName=str;
- }
当你通过添加[Bindable]标记在getter的声明的上方,来定义隐含的getter/setter为可绑定的方法,则该变量可以通过点标语法进行存取。这样可以你通过同样的语法来存
取非绑定的变量,自有变量等来设置数据源绑定。
◆在框架内部,当绑定的变量值更新时,框架会发送propertyChange事件来更新数据。
[Bindable]标记接受一个事件属性,通过定义一个自定义的事件类型:
- [Bindable(event="myValueChanged")]
默认情况下事件属性被设置为propertyChange。如果不进事件类型进行修改,则目的变量会被内部使用该类型进行提示。如果你自定义了该属性,则必须在类的内部进行声明。
绑定是通过事件通知来实现的,当应用程序中的源变量修改或者在初始化时,就会被触发。
你可以通过执行绑定的方法,来强制要求目标为mx.core.UIComponent子类的对象的Flex数据绑定执行。
【编辑推荐】