<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" applicationComplete="init()"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.events.CloseEvent; public var temp:String=""; [Bindable] private var filteredArr:Array; [Bindable] private var plistArr:Array; [Bindable] public var users:Array = [{id:1,name:"赵一", dept:"一年级"}, {id:2,name:"钱二", dept:"一年级"}, {id:3,name:"孙三", dept:"二年级"}, {id:4,name:"李四", dept:"一年级"}, {id:3,name:"周五", dept:"二年级"}, {id:3,name:"吴六", dept:"三年级"}, {id:3,name:"郑七", dept:"三年级"},]; private function init():void{ filteredArr = users.filter(removedDuplicates); temp=combox.selectedItem.toString(); plistArr=users.filter(conditionFunction); } private var keys:Object = {}; private function removedDuplicates(item:Object, idx:uint, arr:Array):Boolean { if (keys.hasOwnProperty(item.dept)) { return false; } else { keys[item.dept] = item; return true; } } private function closeHandler(event:Event):void { temp=String(ComboBox(event.target).selectedItem.dept); plistArr=users.filter(conditionFunction); } private function conditionFunction(item:Object, idx:uint, arr:Array):Boolean { if (item.dept==temp){ return true ; }else{ return false; } } ]]> </fx:Script> <mx:Form width="293" height="152" horizontalCenter="0" verticalCenter="0" borderStyle="solid"> <mx:FormItem label="学年:" width="250"> <mx:ComboBox id="combox" close="closeHandler(event);" labelField="dept" dataProvider="{filteredArr}" selectedIndex="0" width="100%"> </mx:ComboBox> </mx:FormItem> <mx:FormItem width="250"> <mx:Repeater id="checkBoxRepeater" dataProvider="{plistArr}"> <mx:CheckBox id="checkBox" label="{checkBoxRepeater.currentItem.name}"/> </mx:Repeater> </mx:FormItem> </mx:Form> </s:WindowedApplication>