private function widgetCommunication1():void { addSharedData("your key", shared data(ArrayCollection)); }
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:viewer="com.esri.viewer.*" initialize="basewidget1_initializeHandler(event)" > <fx:Script> <![CDATA[ import com.esri.viewer.AppEvent; import mx.events.FlexEvent; protected function basewidget1_initializeHandler(event:FlexEvent):void { ViewerContainer.addEventListener(AppEvent.DATA_PUBLISH, sharedDataUpdated); } private function sharedDataUpdated(event:AppEvent):void { var data:Object = event.data; if (data.key == "my key") { // do something.. } } ]]> </fx:Script>
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, yourWidgetsID#));
//Add this new variable at the beginning with the other private and public vars public var _configData:ConfigData; //Add this new function public function getWidgetId(widgetLabel:String):Number { var id:Number; for (var i:Number = 0; i < _configData.widgets.length; i++) { if (_configData.widgets.label == widgetLabel) id = _configData.widgets.id; } return id; } //Add this to the postConfigHandler function _configData = event.data as ConfigData;
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, ViewerContainer.getWidgetId("Search")));
<script type="text/javascript"> function getFlexApp(appName) { if (navigator.appName.indexOf ("Microsoft") !=-1) { return window[appName]; } else { return document[appName]; } } function someFlexFunction() { getFlexApp('index').flexTalk('Hello World'); } </script> <input type="button" id="butFlexTalk" onclick="someFlexFunction()" value="Say Hello" />
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:viewer="com.esri.viewer.*" xmlns:managers="com.esri.viewer.managers.*" pageTitle="ArcGIS Viewer for Flex" initialize="initApp()"> <fx:Script> <![CDATA[ import mx.controls.Alert; public function initApp():void { if (ExternalInterface.available) ExternalInterface.addCallback("flexTalk", flexTalk); } public function flexTalk(sayThis:String):void { Alert.show(sayThis); } ]]> </fx:Script> <fx:Style source="defaults.css"/>