加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flexviewer两个widget间的如何传值

发布时间:2020-12-15 04:15:54 所属栏目:百科 来源:网络整理
导读:本例子是通过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/f

本例子是通过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>

运行结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读