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