Flexviewer两个widget间的传值
发布时间:2020-12-15 04:39:32 所属栏目:百科 来源:网络整理
导读:本例子是通过widgetA的按钮打开widgetB,并把widgetA的某个值传值到widgetB中,代码如下: widgetA中的代码: ?xml version="1.0" encoding="utf-8"?viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spar
本例子是通过widgetA的按钮打开widgetB,并把widgetA的某个值传值到widgetB中,代码如下: widgetA中的代码: <?xml version="1.0" encoding="utf-8"?> <viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:viewer="com.esri.viewer.*" widgetConfigLoaded="init()"> <fx:Script> <![CDATA[ import com.esri.viewer.AppEvent; import com.esri.viewer.BaseWidget; import com.esri.viewer.IBaseWidget; import com.esri.viewer.ViewerContainer; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; private function init():void { } var i:int=1; protected function button1_clickHandler(event:MouseEvent):void { var msArr:ArrayCollection = new ArrayCollection(); msArr.addItem("第"+i.toString()+"次传值"); addSharedData("test",msArr); var id:Number = ViewerContainer.getInstance().widgetManager.getWidgetId("widgetB"); var bWidget :IBaseWidget = ViewerContainer.getInstance().widgetManager.getWidget(id,true) as IBaseWidget;//打开widgetB i++; } ]]> </fx:Script> <viewer:WidgetTemplate id="aa" width="300" height="300"> <viewer:layout> <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/> </viewer:layout> <s:Button label="测试" click="button1_clickHandler(event)"/> </viewer:WidgetTemplate> </viewer:BaseWidget> widgetB中代码: <?xml version="1.0" encoding="utf-8"?> <viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:viewer="com.esri.viewer.*" initialize="myBaseWidgetInitHandler(event)"> <fx:Script> <![CDATA[ import com.esri.viewer.AppEvent; import com.esri.viewer.IBaseWidget; import com.esri.viewer.ViewerContainer; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.FlexEvent; import com.esri.viewer.utils.Hashtable; protected function myBaseWidgetInitHandler(event:FlexEvent):void { AppEvent.addListener(AppEvent.DATA_SENT,sharedDataUpdatedFrist);//widgetA第一次点击触发 AppEvent.addListener(AppEvent.DATA_PUBLISH,sharedDataUpdatedSecond);//widgetA第二次点击后触发 fetchSharedData(); } /***widgetA第一次点击触发的事件***/ private function sharedDataUpdatedFrist(event:AppEvent):void { var dataTable:Hashtable = event.data as Hashtable; if (dataTable.containsKey("test")) { var recAC:ArrayCollection = dataTable.find("test") as ArrayCollection; if (recAC[0]){ lbl.text=recAC[0].toString(); } } } /***widgetA第二次点击后触发的事件***/ private function sharedDataUpdatedSecond(event:AppEvent):void { var data:Object = event.data; if (data.key == "test") { var obj:Object = data.collection[0]; var arr:ArrayCollection = new ArrayCollection(); arr.addItem(obj); var str:String=arr.getItemAt(0).toString(); this.lbl.text=str; } } ]]> </fx:Script> <viewer:WidgetTemplate id="bb" width="300" height="300"> <viewer:layout> <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/> </viewer:layout> <s:Label id="lbl" text="标签"/> </viewer:WidgetTemplate> </viewer:BaseWidget> 运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |