Я пытаюсь создать приложение Flex с использованием инфраструктуры Robotlegs и не знаю, как справиться с созданием посредников (вызывается -> onRegister) только после события creationComplete компонента представления.
Мое приложение загружает несколько файлов XML при запуске, модели создаются из файлов и затем отправляют события вместе с данными.
Проблема: при «загрузке» встроенных / локальных файлов при запуске события модели отправляются до того, как добавляются прослушиватели посредников, хотя они отображаются до запуска начальной загрузки данных в главном контексте.
Кто-нибудь использует роботолег с flex и имеет более «чистый» способ обхода, чем ручная отправка события посредникам onRegister? При этом «автоматическое» посредничество больше не будет автоматическим ...
Edit:
Минимальный пример кода:
Контекст:
override public function startup( ):void{
mediatorMap.mapView( EditorMenu, EditorMenuMediator );
commandMap.mapEvent( ContextEvent.STARTUP, LoadConfigurationCommand );
dispatchEvent( new ContextEvent( ContextEvent.STARTUP ) );
}
LoadConfigurationCommand:
[Inject] public var configurationService:IXMLLoader;
override public function execute():void{
configurationService.loadXML();
}
ConfigurationService:
public function loadXML(){
trace( "xml loaded" );
dispatch( new XMLLoadedEvent( XMLLoadedEvent.CONFIGURATION_LOADED, result ) );
}
EditorMenuMediator:
override public function onRegister( ):void{
trace( "menu onregister" );
addContextListener( XMLLoadedEvent.CONFIGURATION_LOADED, handleXmlLoaded, XMLLoadedEvent);
}
Трассировка «регистрация меню» происходит задолго до трассировки «загрузка XML», поэтому посредник не прослушивает, когда отправляется событие XmlLoadedEvent.