数据模型与数据绑定

控件可以直接调用服务,ActionScript事件回调使你在服务返回数据时,能够以变成方式更新可视化控件。尽管更新控件的脚本很直观,但是它可能会变的冗长而麻烦,又因为其功能很通用,所以Flex用数据绑定机制自动的处理这种行为。

在最简单的数据绑定形式中,控件可以直接饮用数据而不需要用粘合代码把数据复制到控件中。当数据更新时,引用它的控件也会自动更新,而不需要任何程序员的干预。Flex基础设施会恰当地响应数据变化事件,并且更新所有绑定到该数据的控件。

下面是数据绑定语法的简单的示例:

<mx:Skuder id ="mySlider"/>

<mx:Text text="{mySlider.value}"/>

为了执行数据绑定,你需要将引用置于花括号{}中。在花括号的所有事物都被认为是有Flex就按的表达式。

第一控件Slider部件的值由第二个控件Text域显示。当Slider变化时,Text域的text属性会被自动更新。通过这种方式,开发者不需要为了更新Text域而处理Slider变化事件。

某些控件,例如Tree控件和歌曲库应用程序中的DataGrid的控件,会更加复杂。这些控件有一个dataprovider属性,可以使绑定到数据集更加容易。ActionScript的onSongs()函数展示了如何将SongService.getSongs()方法绑定到Flex的DataGrid的dataprovider上。正如在MXML文件的remoteObject标签中所声明的,这个函数是在JAVA方法返回时ActionScript调用的回调。

更复杂的应用程序需要更复杂的数据建模,例如使用数据传输对象的企业应用系统,或者数据遵循复杂模式的基于消息机制的应用程序,都会鼓励我们进一步将数据源与控制解耦。在Flex开发中,我们通过声明“模型”对象来执行这种解耦,而这种对象是用于数据的通用MXML容器中的。模型不包含任何逻辑,它是在企业应用程序开发中的数据传输对象,或者其他编程语言的类似结构的镜像。通过使用模型,我们可以将控件数据绑定到模型上,同时可以让模型将它的属性绑定到服务的输入和输出上。这可以将数据源、服务与数据绑定到模型上,同时可以让模型将它的属性绑定到服务的输入和输出上。这可以将数据源、服务与数据的可视化消费者解耦,从而促进对模型——视图——控制器(MVC)模式的使用。在更大更复杂的应用程序中,与由插入模型而带来的复杂性与清晰解耦的MVC应用程序的价值相比,这绝对是花小钱办大事。

除了JAVA对象,Flex还可以通过使用WebService和HttpService控件来分别访问基于SOAP的Web服务和更容易调用的HTTP服务。访问所有的服务都会受到安全授权的限制。

举报
评论 0