在绑定中使用数组------ArrayCollection

转载 2012年03月27日 21:53:22

                            在绑定中使用数组
在使用数组进行工作时,比如Array 或者ArrayCollection 对象,可以把数组作为数据绑定
表达式的源或目的。


注意: 当使用数组作为绑定源时,应该使用ArrayCollection 类型的数组,因为ArrayCollection 类在数组或数组元素发生变化时能够发出事件来触发数据绑定。

比如,对ArrayCollection.addItem(), ArrayCollection.addItemAt(),ArrayCollection.removeItem(), 以及ArrayCollection.removeItemAt()方法的调用都会触发数据绑定。

绑定到数组通常将数组绑定给Flex 控件的dataProvider 属性,

 

 

下面范例说明将数组绑定用于List 控件:
<?xml version="1.0"?>
<!-- binding/ArrayBindingDP.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myAC:ArrayCollection = new ArrayCollection(["One", "Two", "Three", "Four"]);
[Bindable]
public var myAC2:ArrayCollection = new ArrayCollection(["Uno", "Dos", "Tres", "Quatro"]);
]]>
</mx:Script>
<!-- Data binding updated at application startup,
when myAC is modified, and when an element of
myAC is modifed. -->


<mx:List dataProvider="{myAC}"/>
<!-- Data bindings to myAC updated. -->


<mx:Button label="Change Element" click="myAC[0]='mod One'"/>
<!-- Data bindings to myAC updated. -->


<mx:Button label="Add Element"  click="myAC.addItem('new element');"/>
<!-- Data bindings to myAC updated. -->


<mx:Button label="Remove Element 0" click="myAC.removeItemAt(0);"/>
<!-- Data bindings to myAC updated. -->


<mx:Button  label="Change ArrayCollection"  click="myAC=myAC2"/>
</mx:Application>


这个例子定义了一个ArrayCollection 对象,然后将List 控件的dataProvider 属性设置为对这个ArrayCollection 的数据绑定。当修改ArrayCollection 对象中的元素,

或者修改对ArrayCollection 对象的引用,都会触发数据绑定。
绑定到数组中的元素
可以使用数组中的单个元素作为数据绑定源,如下例所示:
<?xml version="1.0"?>
<!-- binding/ArrayBinding.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myAC:ArrayCollection = new ArrayCollection([
"One", "Two", "Three", "Four"]);
[Bindable]
public var myAC2:ArrayCollection = new ArrayCollection([
"Uno", "Dos", "Tres", "Quatro"]);
]]>
</mx:Script>
<!-- Data binding updated at application startup
and when myAC modified. -->
<mx:Text id="text1" text="{myAC[0]}"/>
<!-- Data binding updated at application startup,
when myAC modified, and when myAC[0] modified. -->
<mx:Text id="text2" text="{myAC.getItemAt(0)}"/>
<mx:Button id="button1"
label="Change Element"
click="myAC[0]='new One'"/>
<mx:Button id="button2"
label="Change ArrayCollection"
click="myAC=myAC2"/>
</mx:Application>
如果通过方括号语法[]来指定数组元素作为数据绑定表达式的源,那么数据绑定只在应用
启动时触发,或者在数组或其引用被更新时触发。当这个数组元素被更新的时候不会触发数据
绑定。
但数据绑定表达式中的myAC.getItemAt(0)则会在该数组元素变化时被触发更新。因此,id
为 text2 的Text 控件在点击button1 时会被更新,而id 为text1 的Text 控件则不会被更新。
当使用数组中的元素作为数据绑定表示的源时,应当在绑定表达式中使用
ArrayCollection.getItemAt()方法。

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

Flex ArrayCollection类用法详解

本文和大家重点学习一下Flex ArrayCollection的概念,经常被使用的两个集合类型是ArrayCollection类XMLListCollection类。ArrayCollection是A...
  • xiaoniba1024
  • xiaoniba1024
  • 2011年06月30日 09:53
  • 20886

Flex循环删除ArrayCollection中符合条件的项

先看看下面的代码: Js代码   "1.0" encoding="utf-8"?>   "http://www.adobe.com/2006/mxml"  initializ...
  • wq122289014
  • wq122289014
  • 2016年10月20日 15:36
  • 596

关于Flex里面的对象或者ArrayCollection等数组的深度复制问题

13.11 深度拷贝一个ArrayCollection集合 13.11.1 问题 需要拷贝一个索引数组里的所有项或者从一个对象创建一个新对象。 13.11.2解决 使用mx.utils.Obj...
  • vincent50411
  • vincent50411
  • 2012年10月23日 15:32
  • 875

Flex之旅:第一部分:flex必备基础知识积累(4)---ArrayCollection, Array赋值写法

[Bindable] private var items:ArrayCollection=new ArrayCollection([ {label:'Live', value1:'N',...
  • miqi770
  • miqi770
  • 2014年01月28日 10:00
  • 2543

Flex String JSON 转换成 ArrayCollection

String to JSON  , JSON to ArrayCollection ============== import com.adobe.serialization.json.J...
  • jintianhen1
  • jintianhen1
  • 2014年03月07日 17:21
  • 955

ArrayCollection教程之如何搜索、修改指定元素的数据

好了,到今天的重点了。在网上,修改指定元素的方法大概有两种,以修改age为例子,这两种方法分别是: 方法一: var index:int = checkExisten...
  • zhiYU2008
  • zhiYU2008
  • 2011年04月16日 11:59
  • 2716

Flex 中 xml 与 ArrayCollection 之间的相互转换

  • HistoryCreator
  • HistoryCreator
  • 2017年02月07日 22:01
  • 335

ArrayCollection排序的例子

ArrayCollection排序的例子 var ac:ArrayCollection = new ArrayCollection();//先加入几条测试数据ac.addItem(     {ID:0...
  • accp_fangjian
  • accp_fangjian
  • 2008年04月02日 18:20
  • 3345

谈谈Flex中ArrayCollection的复制(克隆)

谈谈Flex中ArrayCollection的复制(克隆)        在Flex的开发过程中,常常会遇到复制ArrayCollection的情况。以前只是从网上找个方法拿来就用,也没有具体的搞清楚...
  • accp_fangjian
  • accp_fangjian
  • 2008年05月09日 16:32
  • 8199

Flex中对ArrayCollection进行排序

利用ArrayCollection的sort属性 xml version="1.0" encoding="utf-8"?> xmlns:mx="http://www.adobe.com/200...
  • lvdou2518
  • lvdou2518
  • 2014年02月28日 14:50
  • 638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在绑定中使用数组------ArrayCollection
举报原因:
原因补充:

(最多只允许输入30个字)