- <?xml version="1.0"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >
- <!-- data model -->
- <mx:Array id="coffeeArray">
- <mx:Object label="Red Sea" data="Smooth and fragrant"/>
- <mx:Object label="Andes" data="Rich and pungent"/>
- <mx:Object label="Blue Mountain" data="Delicate and refined"/>
- </mx:Array>
- <mx:Script>
- <![CDATA[
- import mx.collections.ArrayCollection;
- function addToCart():void{
- if(cart.dataProvider == null) {
- cart.dataProvider = new ArrayCollection();
- }
- ArrayCollection(cart.dataProvider).addItem(coffeeCombo.selectedItem.data);
- }
- ]]>
- </mx:Script>
- <!-- view -->
- <mx:Panel title="My First Flex App" width="300">
- <mx:Label text="Coffee Blends"/>
- <mx:ComboBox id="coffeeCombo" dataProvider="{coffeeArray}"/>
- <mx:Text text="Description: {coffeeCombo.selectedItem.data}"/>
- <mx:Button label="Add to Cart" click="addToCart()"/>
- <mx:List id="cart"/>
- </mx:Panel>
- </mx:Application>
ArrayCollection对一个专门用在view中的类,ArrayCollection 是提供给 view 绑定用的
ArrayCollection 的 item 在发生变化的时候会触发事件,array 则不会
ArrayCollection实现接口ICollectionView,在Flex的类定义内属于[数据集],他提供更强大的检索、过滤、排序、分类、更新监控等功能。
FDK2提供的类似的类还有XMLListCollection
利用这个统一接口,你可以很容易地操作数据输出和输入。
比如下面的例子,是一个用于数据模糊过滤的[数据集],你可以直接把它付给DataGrid的dataProvider属性。
执行setFliter("aaa", "123");就可以使得数据源内只剩下字段[aaa]的值为[123*]的条件数据。
执行clearFliters();取消过滤,恢复初始状态数据。