Flex中的itemRenderer如何分发事件其所有者才能接收到
发布时间:2020-12-15 04:36:36 所属栏目:百科 来源:网络整理
导读:如itemRenderer是一个checkBoxmx:itemRenderer mx:Component mx:CheckBox change="changeHandler()" mx:Script ![CDATA[ import mx.events.ListEvent; private function changeHandler():void{ this.owner.dispatchEvent(new Event("change_end")); } ]] /mx
如itemRenderer是一个checkBox <mx:itemRenderer> <mx:Component> <mx:CheckBox change="changeHandler()"> <mx:Script> <![CDATA[ import mx.events.ListEvent; private function changeHandler():void{ this.owner.dispatchEvent(new Event("change_end")); } ]]> </mx:Script> </mx:CheckBox> </mx:Component> </mx:itemRenderer> //还可以将itemrenderer中的事件发送设为冒泡模式 dispatchEvent(new Event("change_end",true,true)); === 通过自定义事件发送参数 package widgets.layerManager.proxy { import flash.events.Event; public class LayerManagerEvent extends Event { /** * checkbox的选择事件 */ public static var CHECKBOX_CLICK:String= "checkBoxClick" /** * checkbox的label */ public var checkBoxLabel:String=""; /** * checkbox的选中状态 */ public var checkBoxSelected:Boolean=false; //当itemrenderer中发送事件时,将自定义事件的冒泡功能打开,否则owner监听不到事件 public function LayerManagerEvent(type:String,bubbles:Boolean=true,cancelable:Boolean=true) { super(type,bubbles,cancelable); } } } // protected function checkBox_clickHandler(event:MouseEvent):void { //this.owner.dispatchEvent(new Event("checkboxClick")); var e:LayerManagerEvent=new LayerManagerEvent(LayerManagerEvent.CHECKBOX_CLICK); e.checkBoxLabel=checkBox.label; e.checkBoxSelected=checkBox.selected; dispatchEvent(e);//需要将冒泡功能打开才可以被owner间听到 } // protected function basewidget1_creationCompleteHandler(event:FlexEvent):void { //监听从itemrenderer中发送的事件 tree.addEventListener(LayerManagerEvent.CHECKBOX_CLICK,treeCheckboxLayerDisplayHandler); } private function treeCheckboxLayerDisplayHandler(event:LayerManagerEvent):void{ //获取checkbox对应的数据源的id值. 通过遍历实现 var layerId:String=""; for each(var object:Object in _layerListProxy.getData()){ if(event.checkBoxLabel==object["label"]){ layerId=object["id"].toString(); //trace(object["id"].toString()); break; } } IocAppFacade.getInstance().sendNotification(ConstFacade.LAYER_DISPLAY,{layerId:layerId,visible:event.checkBoxSelected});//属性layerId=sde.SDE.*** } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |