Я больше знаком с Mate, чем с Cairngorm, но в этой ситуации я делаю резервную копию всплывающего окна с моделью и отправляю события из модели. Поскольку модель и основное приложение находятся на одном уровне, основное приложение может слышать события.
Обновление:
Вот грубый пример.
В моем MainMap.mxml я создаю экземпляр модели презентации и вставляю его в мое всплывающее окно.
<EventHandlers type="{ FlexEvent.PREINITIALIZE }">
<ObjectBuilder generator="{ MyPopUpPresentationModel }" constructorArguments="{ scope.dispatcher }"/>
</EventHandlers>
<Injectors target="{ MyPopUp }">
<PropertyInjector targetKey="model" source="{ MyPopUpPresentationModel }"/>
</Injectors>
И в MyPopUp.mxml У меня есть экземпляр моей модели.
<fx:Script>
<![CDATA[
[Bindable] public var model:MyPopUpPresentationModel;
]]>
</fx:Script>
Вот MyPopUpPresentationModel.as .
package
{
private var dispatcher:IEventDispatcher;
public function DigitalTagTrackingPresentationModel(target:IEventDispatcher)
{
this.dispatcher = target;
}
public function dispatchMyCustomEvent():void
{
dispatcher.dispatchEvent(new Event("MyCustomEvent"));
}
}
Когда вы вызываете model.dispatchMyCustomEvent();
из MyPopUp.mxml , оно отправит событие, используя область диспетчера модели презентации, которая будет на том же уровне, что и родительское приложение. Надеюсь, это поможет!