在Flex數據綁定中使用數組
本文和大家重點討論一下如何在Flex數據綁定中使用數組,在使用數組進行工作時,比如Array或者ArrayCollection對象,可以把數組作為Flex數據綁定表達式的源或目的。
在Flex數據綁定中使用數組
在使用數組進行工作時,比如Array或者ArrayCollection對象,可以把數組作為Flex數據綁定表達式的源或目的。
注意:當使用數組作為綁定源時,應該使用ArrayCollection類型的數組,因為ArrayCollection類在數組或數組元素發生變化時能夠發出事件來觸發Flex數據綁定。比如,對ArrayCollection.addItem(),ArrayCollection.addItemAt(),ArrayCollection.removeItem(),以及ArrayCollection.removeItemAt()方法的調用都會觸發Flex數據綁定。
綁定到數組
通常將數組綁定給Flex控件的dataProvider屬性,下面范例說明將數組綁定用于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屬性設置為對這個ArrayCollection的Flex數據綁定。當修改ArrayCollection對象中的元素,或者修改對ArrayCollection對象的引用,都會觸發Flex數據綁定。
綁定到數組中的元素
可以使用數組中的單個元素作為Flex數據綁定源,如下例所示:
- <?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"/>
如果通過方括號語法[]來指定數組元素作為Flex數據綁定表達式的源,那么Flex數據綁定只在應用啟動時觸發,或者在數組或其引用被更新時觸發。當這個數組元素被更新的時候不會觸發Flex數據綁定。
但Flex數據綁定表達式中的myAC.getItemAt(0)則會在該數組元素變化時被觸發更新。因此,id為text2的Text控件在點擊button1時會被更新,而id為text1的Text控件則不會被更新。
當使用數組中的元素作為Flex數據綁定表示的源時,應當在綁定表達式中使用ArrayCollection.getItemAt()方法。
點擊button2時將myAC2拷貝給myAC,這會觸發對數組元素的所有Flex數據綁定而不論它們是如何實現的。
【編輯推薦】
- Flex數據綁定中綁定到函數、對象和數組
- 技術分享 在ActionScript中如何定義Flex數據綁定
- 技術前沿 看Flex客戶端緩存技術如何使用
- 解析Flex數據綁定的幾種方式
- Flex內存泄露解決方法和內存釋放優化原則