首页 > 设计 > WEB开发 > 正文

第十四章. 数据绑定

2023-07-22 12:39:08
字体:
来源:转载
供稿:网友
Flex 为基于组件的应用程序提供了一种健全的架构模式,在这个强大的框架里,是一个基于事件的系统,在这个事件系统中通过数据绑定,可以通过其它的对象来修改另外一个对象的内部的属性值。

数据绑定使得在应用程序中不同的层间传递数据的变得简单和方便,通过将源属性与目标属性进行关联来实现。当源属性的值有更新时,会产生一个事件来通知目的属性来进行更新。

当一个变量标记为可绑定后,其它对象就可以修改该变量的其它目的属性的值。将一个变量上进行数据绑定,你必须使用下面三种方式中的一种来定义[Bindable]标记。

?在一个类的定义之前
+展开
-ActionScript
package com.oreilly.flexcookbook
{
import flash.events.EventDispatcher;
[Bindable]
public class DataObject extends EventDispatcher{}
}

在一个类创建之前添加[Bindable]标记创建一个绑定的表达式从而使得类的所有共有属性变得可以绑定。所有可以绑定的类必须由IEventDispatcher 类实现,因为数据绑定是基于事件驱动,来复制源数据到目的数据。

? 在变量的前面进行声明
+展开
-ActionScript
[Bindable] private var _lastName:String;
[Bindable] protected var _age:Number;
[Bindable] public var firstName:String;

声明为私有的变量标记为可绑定时,则只能在类中进行绑定。保护的变量则只能在继承或者类本身可见。而共有变量都可见。

? 在属性的前面通过隐含的getter/setter 方法来变向的进行绑定:
+展开
-ActionScript
private var _lastName:String;
...
[Bindable]
public function get lastName():String{return _lastName;}
public function set lastName( str:String ):void{_lastName = str;}

当你通过添加[Bindable]标记在getter 的声明的上方,来定义隐含的getter/setter 为可绑定的方法,则该变量可以通过点标语法进行存取。这样可以你通过同样的语法来存取非绑定的变量,自有变量等来设置数据源绑定。

在框架内部,当绑定的变量值更新时,框架会发送propertyChange 事件来更新数据。

[Bindable]标记接受一个事件属性,通过定义一个自定义的事件类型:
+展开
-ActionScript
[Bindable(event="myValueChanged")]


默认情况下事件属性被设置为propertyChange。如果不进事件类型进行修改,则目的变量会被内部使用该类型进行提示。如果你自定义了该属性,则必须在类的内部进行声明。

绑定是通过事件通知来实现的,当应用程序中的源变量修改或者在初始化时,就会被触发。

你可以通过执行绑定的方法,来强制要求目标为mx.core.UIComponent 子类的对象的数据绑定执行。

数据绑定提供一层而达到在不同的对象间进行数据同步,从而帮助创建富应用程序。这一节的多种数据绑定的技巧到你的应用程序的架构中去。

目录


14.1.绑定一个属性

14.2.绑定到一个函数

14.3.创建一个双向绑定

14.4.使用ActionScript来进行数据绑定

14.5.链式的属性绑定

14.6.使用E4X进行绑定XML的数据

14.7.创建个性化可绑定的属性

14.8.绑定到一个一般的对象

14.9.绑定到一个动态类的属性

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表