在Flex數(shù)據(jù)綁定中使用數(shù)組
本文和大家重點討論一下如何在Flex數(shù)據(jù)綁定中使用數(shù)組,在使用數(shù)組進(jìn)行工作時,比如Array或者ArrayCollection對象,可以把數(shù)組作為Flex數(shù)據(jù)綁定表達(dá)式的源或目的。
在Flex數(shù)據(jù)綁定中使用數(shù)組
在使用數(shù)組進(jìn)行工作時,比如Array或者ArrayCollection對象,可以把數(shù)組作為Flex數(shù)據(jù)綁定表達(dá)式的源或目的。
注意:當(dāng)使用數(shù)組作為綁定源時,應(yīng)該使用ArrayCollection類型的數(shù)組,因為ArrayCollection類在數(shù)組或數(shù)組元素發(fā)生變化時能夠發(fā)出事件來觸發(fā)Flex數(shù)據(jù)綁定。比如,對ArrayCollection.addItem(),ArrayCollection.addItemAt(),ArrayCollection.removeItem(),以及ArrayCollection.removeItemAt()方法的調(diào)用都會觸發(fā)Flex數(shù)據(jù)綁定。
綁定到數(shù)組
通常將數(shù)組綁定給Flex控件的dataProvider屬性,下面范例說明將數(shù)組綁定用于List控件:
- <?xmlversionxmlversion="1.0"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">
- <![CDATA[
- importmx.collections.ArrayCollection;
- [Bindable]
- publicvarmyAC:ArrayCollection=newArrayCollection([
- "One","Two","Three","Four"]);
- [Bindable]
- publicvarmyAC2:ArrayCollection=newArrayCollection([
- "Uno","Dos","Tres","Quatro"]);
- ]]>
- <mx:Button
- label="ChangeElement"
- click="myAC[0]='modOne'"/>
- <mx:Button
- label="AddElement"
- click="myAC.addItem('newelement');"/>
- <mx:Button
- label="RemoveElement0"
- click="myAC.removeItemAt(0);"/>
- <mx:Button
- label="ChangeArrayCollection"
- click="myAC=myAC2"/>
這個例子定義了一個ArrayCollection對象,然后將List控件的dataProvider屬性設(shè)置為對這個ArrayCollection的Flex數(shù)據(jù)綁定。當(dāng)修改ArrayCollection對象中的元素,或者修改對ArrayCollection對象的引用,都會觸發(fā)Flex數(shù)據(jù)綁定。
綁定到數(shù)組中的元素
可以使用數(shù)組中的單個元素作為Flex數(shù)據(jù)綁定源,如下例所示:
- <?xmlversionxmlversion="1.0"?>
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml">
- <![CDATA[
- importmx.collections.ArrayCollection;
- [Bindable]
- publicvarmyAC:ArrayCollection=newArrayCollection([
- "One","Two","Three","Four"]);
- [Bindable]
- publicvarmyAC2:ArrayCollection=newArrayCollection([
- "Uno","Dos","Tres","Quatro"]);
- ]]>
- <mx:Buttonidmx:Buttonid="button1"
- label="ChangeElement"
- click="myAC[0]='newOne'"/>
- <mx:Buttonidmx:Buttonid="button2"
- label="ChangeArrayCollection"
- click="myAC=myAC2"/>
如果通過方括號語法[]來指定數(shù)組元素作為Flex數(shù)據(jù)綁定表達(dá)式的源,那么Flex數(shù)據(jù)綁定只在應(yīng)用啟動時觸發(fā),或者在數(shù)組或其引用被更新時觸發(fā)。當(dāng)這個數(shù)組元素被更新的時候不會觸發(fā)Flex數(shù)據(jù)綁定。
但Flex數(shù)據(jù)綁定表達(dá)式中的myAC.getItemAt(0)則會在該數(shù)組元素變化時被觸發(fā)更新。因此,id為text2的Text控件在點擊button1時會被更新,而id為text1的Text控件則不會被更新。
當(dāng)使用數(shù)組中的元素作為Flex數(shù)據(jù)綁定表示的源時,應(yīng)當(dāng)在綁定表達(dá)式中使用ArrayCollection.getItemAt()方法。
點擊button2時將myAC2拷貝給myAC,這會觸發(fā)對數(shù)組元素的所有Flex數(shù)據(jù)綁定而不論它們是如何實現(xiàn)的。
【編輯推薦】
- Flex數(shù)據(jù)綁定中綁定到函數(shù)、對象和數(shù)組
- 技術(shù)分享 在ActionScript中如何定義Flex數(shù)據(jù)綁定
- 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
- 解析Flex數(shù)據(jù)綁定的幾種方式
- Flex內(nèi)存泄露解決方法和內(nèi)存釋放優(yōu)化原則