Flex中的数据绑定(Data Binding)
四月 8, 2009 in RIA Flex
在flex的actionscript代码中经常可以看到 [Bindable] 标记,在刚接触flex的时候,看到别人的代码里有这样的写法,自己也不管有什么用,都在变量前面添加这个标记,反正也没感觉到带来什么不好的,[Bindable]几乎快被“滥用”
实际上[Bindable]标记正是一个flex中非常重要的特性:数据绑定(Data Binding),数据绑定就是将绑定的源数据发生变化时,flex会将更改后的值赋给被绑定的数据对象,实现数据的同步。
flex中的数据绑定实际上是观察者模式的实现,对于观察者模式的内容随处可见,我就不在这里描述,观察者的设计模式在UI的设计中被广泛的使用,用来实现在UI中展现数据
其中“主体对象”即是被观察者,只要主体对象的属性发生变化,所有的观察者将会得到通知,并更新自己的属性
flex中为什么需要这样的特性呢?
在RIA应用开发中,应用系统的架构通常会采用RESTful风格的模式,flex3被用来作为RIA应用中的展现层技术被广泛使用,而后端的业务逻辑的处理,会基于各种开源的技术,如通过Spring的整合能力,采用Flex+BlazeDS+Hibernate+Spring。所有对资源的访问都会采用service的方式来实现,flex只是用来展现通过service返回的数据并将用户提交的数据填入service并调用它。在这种模式下,异步传输模式被作为不二的传输模式来应用,因此UI的展现必须保证在异步传输模式下数据返回的时候通知相关的UI组件,以便UI组件进行必要的刷新将最新的数据展现给最终用户。
如在flex应用中一个表格(DataGrid)往往是展现后台数据库中的数据,因此一般会通过使用像JPA这样的技术来访问后台的数据库,并结合BlazeDS和Spring技术将取数的方法发布为一个service,然后在flex应用的creationComplete事件中去调用这个远程service方法,将数据返回给表格,而从flex应用调用远程service方法到数据返回到表格可能需要经过一段时间,所以很多时候表格创建的时间点要比数据返回的早,因此必须保证在数据返回的时候给表格一个“通知”,让表格知道数据过来了需要进行刷新表格。
在Flex3,上面所说的[Bindable] 标记只是实现数据绑定的一种最简单最常见的方式
- [Bindable] 或[Bindable(event="eventName")] 标记的方法
- mx.binding.utils.BindingUtils..bindProperty的方法
- mx.binding.utils.BindingUtils..bindSetter的方法
- mx.binding.utils.ChangeWatcher.watch的方法
后面再描述具体的使用。
–
无相关文章.
aronezhang said on 九月 27, 2009
村长还对Flex念念不忘啊?
闪闪 said on 九月 26, 2009
要是能玩玩这个也是相当的不错啊