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"/>