1、第 17章 数据处理和数据服务 从本章开始学习如何在 Flex应用中操纵数据。Flex 2在先前的版本基础上加强了客户端的数据功能,同时在 Flex的产品线中加入了 Flex Data Service 2,使 Flex应用更方便的与服务器端进行数据交互。本章主要介绍 Flex中数据的相关特性,简要的介绍 Flex数据服务。17.1 Flex中的数据处理 在 Flex应用开发过程中,数据是不可缺少的一部分。获取服务器端数据,并对数据进行操作,成为开发应用过程非常重要的部分。本节主要介绍 Flex中数据处理的关键步骤,包含绑定数据(Binding Data)、存储数据( Storing Data)
2、、验证数据(Validating Data)和格式化数据( Formatting Data)。 数据在用户与应用交互中是无处不在的。从用户在应用界面输入数据,请求返回信息,到服务器端返回数据并在见面上显示数据,经历了数个数据处理阶段,如图所示。17.2 绑定数据 “ 绑定 ” 是非常形象的概念。例如把网上银行帐户和你的信用卡帐户绑定,网上购物消费后,信用卡帐号的余额也会发生改变。而对于数据,绑定是在不同的对象之间进行数据的捆绑过程,当其中一个对象改变了,另一个对象也发生改变。绑定为应用的数据传递提供了一种便捷的方式。这里的对象通常指 Flex组件的属性,例如文本控件的text属性,数据类组件的
3、 dataProvider属性等。 通常,一个数据绑定由三部分构成,包括绑定源、绑定目标和触发事件。当事件被触发后,绑定发生,完成从绑定源到绑定目标的数据拷贝。 Flex 2中提供了三种数据绑定的方法: “ ” 语法、 MXML的 标签和 ActionScript中的 BindingUtils方法。下面分别介绍这 3种方法。17.2.1 使用 “ ” 进行数据绑定 在使用 “ ” 进行绑定时,绑定源可以是控件属性、 ActionScript表达式、 ActionScript函数。 使用 “ ” 语法进行数据绑定是最简单的数据绑定方式。使用该方法时, 将绑定的源属性括起来,作为目标属性的值,具体
4、形式如下。 目标属性的值 =源属性 ;17.2.2 使用 标签进行数据绑定 在 Flex应用中,还可以使用 标签取代 “ ” 进行数据绑定。当使用 标签时,需要提供为标签提供源属性和目标属性,这和使用 “ ” 是一致的。 标签定义数据绑定的一般格式如下: 17.2.3 使用 ActionScript定义绑定 前面使用 “ ” 或者 标签定义数据绑定,都是在 MXML中进行。 Flex还支持在ActionScript中使用mx.binding.utils.BindingUtils类来定义数据绑定。该类的 bindProperty()用来将属性绑定到变量上。 bindSetter()方法可以定制的
5、方式实现绑定。 1使用 bindProperty()方法 2 bindSetter()方法17.2.4 多个源属性到目标属性的绑定 标签可以实现多个不同的源属性到相同的目标属性的绑定。这是通过多个具有相同目的属性的绑定标签来完成的。但也可以与“ ” 组合定义使用。 下面的例子使用用多个源属性的绑定,一个采用标签,一个采用 “ ” ,如图所示。17.2.5 源属性到多个目标属性的绑定 同样,同一个源属性可以绑定到多个不同的目标属性上。在接下来的这个例子中,文本输入控件的 text属性绑定到两个数据模型上,这两个数据模型有分别对应两个标签控件的 text属性,如图所示。17.3 存储数据 Flex
6、中存储数据主要依靠数据模型来实现。可以根据应用的需要,在数据模型中定义相应的属性用来保存应用数据。 数据模型广泛的用于 Flex前台界面和后台服务器之间交互。用户界面的数据在发送到服务器端处理之前,被保存在数据模型中。同样,数据模型也可以保存来自服务器处理完成的数据。从 MVC设计模式的角度来看,数据模型位于模型层面,起到承上启下的作用。 数据模型模型的引入,使得数据的验证和格式化都变得容易。同时数据模型的定义可以包含客户端的业务逻辑,通过不同数据的组合,大大增强了数据的内聚性。 本节主要介绍数据模型的定义、验证和使用。17.3.1 数据模型定义 数据模型是 ActionScript对象。数据模型的定义有两种方法: MXML标签、 ActionScript函数或者ActionScript类。通常是根据实际情况,决定使用哪种方法。对于简单的数据结构使用 MXML来定义,而 ActionScript函数或者 ActionScript类方法一般用来定义复杂的数据结构和客户端业务逻辑。 1.使用 MXML标签 2.使用 ActionScript函数和 ActionScript类