Flex中如何通过监听collectionChange事件检测arraycollection是否改变了的例子

接下来的例子演示了 Flex中如何通过监听 collectionChange事件检测 ArrayCollection是否改变.这里所谓的改变,包括项目的追加,删除,以及刷新等操作。
让我们先来看一下Demo(可以右键View Source或 点击这里察看源代码
 
下面是完整代码(或 点击这里查看):
Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white">
  6.     <mx:Script>
  7.         <![CDATA[
  8.             import mx.utils.ObjectUtil;
  9.             import mx.controls.dataGridClasses.DataGridColumn;
  10.             import mx.events.CollectionEvent;
  11.             private function arrColl_collectionChange(evt:CollectionEvent):void {
  12.                 callLater(addTheItem, [evt]);
  13.             }
  14.             private function arrCollAddItem():void {
  15.                 arrColl.addItem({data:new Date()});
  16.             }
  17.             private function addTheItem(evt:Event):void {
  18.                 eventsArrColl.addItem(evt);
  19.             }
  20.             private function arrCollRemoveItem():void {
  21.                 if (arrColl.length > 0) {
  22.                     arrColl.removeItemAt(0);
  23.                 }
  24.             }
  25.             private function dataGridColumn_labelFunc(item:Object, col:DataGridColumn):String {
  26.                 return ObjectUtil.toString(item[col.dataField]);
  27.             }
  28.         ]]>
  29.     </mx:Script>
  30.     <mx:ArrayCollection id="eventsArrColl" />
  31.     <mx:ArrayCollection id="arrColl"
  32.             collectionChange="arrColl_collectionChange(event);" />
  33.     <mx:Model id="columnModel">
  34.         <columns>
  35.             <bubbles>{bubblesCheckBox.selected}</bubbles>
  36.             <cancelable>{cancelableCheckBox.selected}</cancelable>
  37.             <currentTarget>{currentTargetCheckBox.selected}</currentTarget>
  38.             <eventPhase>{eventPhaseCheckBox.selected}</eventPhase>
  39.             <items>{itemsCheckBox.selected}</items>
  40.             <kind>{kindCheckBox.selected}</kind>
  41.             <location>{locationCheckBox.selected}</location>
  42.             <oldLocation>{oldLocationCheckBox.selected}</oldLocation>
  43.             <target>{targetCheckBox.selected}</target>
  44.             <type>{typeCheckBox.selected}</type>
  45.         </columns>
  46.     </mx:Model>
  47.     <mx:ApplicationControlBar dock="true">
  48.         <mx:Button label="Add item to ArrayCollection"
  49.                 emphasized="true"
  50.                 click="arrCollAddItem();" />
  51.         <mx:Button label="Remove item"
  52.                 click="arrCollRemoveItem();" />
  53.         <mx:Button label="Refresh items"
  54.                 click="arrColl.refresh();" />
  55.         <mx:Spacer width="100%" />
  56.         <mx:PopUpButton label="Toggle DataGrid columns"
  57.                 openAlways="true">
  58.             <mx:popUp>
  59.                 <mx:Form styleName="plain"
  60.                         backgroundColor="white">
  61.                     <mx:FormItem label="bubbles:">
  62.                         <mx:CheckBox id="bubblesCheckBox"
  63.                                 selected="true" />
  64.                     </mx:FormItem>
  65.                     <mx:FormItem label="cancelable:">
  66.                         <mx:CheckBox id="cancelableCheckBox"
  67.                                 selected="true" />
  68.                     </mx:FormItem>
  69.                     <mx:FormItem label="currentTarget:">
  70.                         <mx:CheckBox id="currentTargetCheckBox"
  71.                                 selected="true" />
  72.                     </mx:FormItem>
  73.                     <mx:FormItem label="eventPhase:">
  74.                         <mx:CheckBox id="eventPhaseCheckBox"
  75.                                 selected="true" />
  76.                     </mx:FormItem>
  77.                     <mx:FormItem label="items:">
  78.                         <mx:CheckBox id="itemsCheckBox"
  79.                                 selected="true" />
  80.                     </mx:FormItem>
  81.                     <mx:FormItem label="kind:">
  82.                         <mx:CheckBox id="kindCheckBox"
  83.                                 selected="true" />
  84.                     </mx:FormItem>
  85.                     <mx:FormItem label="location:">
  86.                         <mx:CheckBox id="locationCheckBox"
  87.                                 selected="true" />
  88.                     </mx:FormItem>
  89.                     <mx:FormItem label="oldLocation:">
  90.                         <mx:CheckBox id="oldLocationCheckBox"
  91.                                 selected="true" />
  92.                     </mx:FormItem>
  93.                     <mx:FormItem label="target:">
  94.                         <mx:CheckBox id="targetCheckBox"
  95.                                 selected="true" />
  96.                     </mx:FormItem>
  97.                     <mx:FormItem label="type:">
  98.                         <mx:CheckBox id="typeCheckBox"
  99.                                 selected="true" />
  100.                     </mx:FormItem>
  101.                 </mx:Form>
  102.             </mx:popUp>
  103.         </mx:PopUpButton>
  104.     </mx:ApplicationControlBar>
  105.     <mx:VDividedBox width="100%" height="100%">
  106.         <mx:List id="list"
  107.                 dataProvider="{arrColl}"
  108.                 labelField="data"
  109.                 width="50%"
  110.                 rowCount="5" />
  111.         <mx:DataGrid id="dataGrid"
  112.                 dataProvider="{eventsArrColl}"
  113.                 itemRenderer="mx.controls.Label"
  114.                 width="100%"
  115.                 height="100%">
  116.             <mx:columns>
  117.                 <mx:DataGridColumn dataField="bubbles"
  118.                         visible="{columnModel.bubbles}" />
  119.                 <mx:DataGridColumn dataField="cancelable"
  120.                         visible="{columnModel.cancelable}" />
  121.                 <mx:DataGridColumn dataField="currentTarget"
  122.                         visible="{columnModel.currentTarget}" />
  123.                 <mx:DataGridColumn dataField="eventPhase"
  124.                         visible="{columnModel.eventPhase}" />
  125.                 <mx:DataGridColumn dataField="items"
  126.                         labelFunction="dataGridColumn_labelFunc"
  127.                         visible="{columnModel.items}" />
  128.                 <mx:DataGridColumn dataField="kind"
  129.                         visible="{columnModel.kind}" />
  130.                 <mx:DataGridColumn dataField="location"
  131.                         visible="{columnModel.location}" />
  132.                 <mx:DataGridColumn dataField="oldLocation"
  133.                         visible="{columnModel.oldLocation}" />
  134.                 <mx:DataGridColumn dataField="target"
  135.                         visible="{columnModel.target}" />
  136.                 <mx:DataGridColumn dataField="type"
  137.                         visible="{columnModel.type}" />
  138.             </mx:columns>
  139.         </mx:DataGrid>
  140.     </mx:VDividedBox>
  141. </mx:Application>

你可能感兴趣的:(职场,休闲)