ArcGIS for Java_Flex入门学习_数据绑定功能

Flex入门学习:数据绑定功能

1.绑定组件ComboBoxLabel
<mx:ComboBox id="cb1" fontSize="12">

<mx:Object label="第一项" data="1"/>

<mx:Object label="第二项" data="2"/>

<mx:Object label="第三项" data="3"/>

<mx:Object label="第四项" data="4"/>

</mx:ComboBox>

<mx:Label text="{cb1.selectedItem.label}" y="50" fontSize="12"/>

解析:花括号是数据绑定,cb1.selectedItem.label代表这个ComboBox当前所选中的项目的标签。

属性值只有在需要数据绑定的时候要加花括号。

2.把外部xml文件中的数据绑定到组件里。

1new一个data.xml文件,输入内容如下保存。

<?xml version="1.0" encoding="utf-8"?>

<root>

<rec label="第一项目" data="1"/>

<rec label="第二项目" data="2"/>

<rec label="第三项目" data="3"/>

<rec label="第四项目" data="4"/>

<rec label="第五项目" data="5"/>

<rec label="第六项目" data="6"/>

<rec label="第七项目" data="7"/>

<rec label="第八项目" data="8"/>

</root>

2.mxml中代码
<mx:Application creationComplete="init()" 

xmlns:mx="http://www.adobe.com/2006/mxml" >

<mx:Script>

<![CDATA[ 

//所有swf中的public代码都能被别人直接调用

private function init():void{

https1.send();

private function chuli():void{

//cb1的数据源由https1.lastResult.root.rec提供。

cb1.dataProvider=https1.lastResult.root.rec;

}

]]>

</mx:Script>

<mx:HTTPService id="https1" result="chuli()" url="data.xml" useProxy="false" />

<mx:ComboBox id="cb1" fontSize="12" />

<mx:Label text="{cb1.selectedItem.label}" y="50" fontSize="12"/>

</mx:Application>

代码解析:

流程:当Application创建完毕后,执行init()方法,在init()方法中执行https1.send();发送http请求,flex程序创建好就立即发送http请求给data.xml,并把data.xml返回给flex程序,发生result结果事件,事件执行chuli()方法,处理得到数据。
<mx:Script>

<![CDATA[ 

代码只能写在这里

]]>

</mx:Script>
<mx:Script>是真正写ActionScript代码的地方。

Flex主要分3大途径获取数据:

1.RPC Service
1)HTTPService
2)WebService
3)RemoteObjectService(需要Flex Data Service)

2.Data Management Servie(需要Flex Data Service)

3.Messaging Service(需要Flex Data Service)
Flex只能在发生某些事件的时候才能执行AS3代码,没有发生事件的时候是不可能执行代码的。

所以,要让HTTPService获取外部xml数据源,并处理数据,必须在一个事件下进行。Flexn多事件,例如最常用的creationComplete事件:每当一个组件自我创建完毕以后,就发出creationComplete事件。基本每个可视组件都有creationComplete事件,Application顶级容器也是可视的,也有creationComplete事件。

AS3基本都运行在客户端,服务器端对机器要求高。只有装有Flex Data Service的时候,AS3才有机会在服务器上运行,否则,永远运行在客户端。
creationComplete="init()" 当Application顶级容器创建完毕后,执行init()方法。

useProxy="false"表示不用代理;url里永远是数据源的地址,也可是wsdl,php等任何可以返回xml的地址。

AS3代码可以放在一个文件里,但是不能动态导入。

例如:将init()chuli()两个函数存放在一个myAS.as文件中,.mxmlActionScript写成
<mx.Script source="myAS.as"/>

虽然asmxml分离了,但每次保存的时候,as还是被内置到了mxml里,如果不用Flex Data Service,不可能动态导入外部AS代码。

 

 

posted @ 2011-12-02 10:51  大头鱼  阅读(325)  评论(0编辑  收藏  举报