在Flex数据绑定中使用数组

本文向大家介绍一下在Flex数据绑定中使用数组,Flex数据绑定需要一个源属性,一个目的属性,以及用
首页 新闻资讯 行业资讯 在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"/>
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

  • 25.

  • 26.

  • 27.

  • 28.

  • 29.

  • 30.

 这个例子定义了一个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"/>
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

 如果通过方括号语法[]来指定数组元素作为Flex数据绑定表达式的源,那么Flex数据绑定只在应用启动时触发,或者在数组或其引用被更新时触发。当这个数组元素被更新的时候不会触发Flex数据绑定。
但Flex数据绑定表达式中的myAC.getItemAt(0)则会在该数组元素变化时被触发更新。因此,id为text2的Text控件在点击button1时会被更新,而id为text1的Text控件则不会被更新。
当使用数组中的元素作为Flex数据绑定表示的源时,应当在绑定表达式中使用ArrayCollection.getItemAt()方法。

点击button2时将myAC2拷贝给myAC,这会触发对数组元素的所有Flex数据绑定而不论它们是如何实现的。
 

【编辑推荐】

  1. Flex数据绑定中绑定到函数、对象和数组

  2. 技术分享 在ActionScript中如何定义Flex数据绑定

  3. 技术前沿 看Flex客户端缓存技术如何使用

  4. 解析Flex数据绑定的几种方式

  5. Flex内存泄露解决方法和内存释放优化原则

 

 

13    2010-07-30 10:53:53    Flex数据绑定