我在再谈Gaia结合Robotlegs进行开发一文中提到的视图接口注入方法,在Robotlegs更新到1.4版本以后就失效了。问题出在以下这行代码:
mediatorMap.mapView(IModule, ModulePageMediator, IModule);
在新版的Robotlegs下并不会生成对应的Mediator。经过一番研究后发现要改写MediatorMap才行,幸好已经有人开发出了ViewInterfaceMediatorMap插件,省了我很多工作。这个插件使用很简单。用以下代码来覆盖掉默认的mediatorMap就可以支持视图的接口注入了:
override protected function get mediatorMap():IMediatorMap { return _mediatorMap ||= new ViewInterfaceMediatorMap(contextView, createChildInjector(), reflector); }
我已经将该插件包含到RobotGaiaAnt 0.7的更新中,同时提供了一个简单的例子来演示这套框架的运行情况:RGADemo。
这个例子包含了两个页面Home和Member。其中Home是一个通常的简单页面,而Member页面继承了ModulePage,是作为一个Robotlegs模块存在,包含独立的MemberContext。
override public function set parentInjector(value : IInjector) : void { super.parentInjector = value; context = new MemberContext(this, false, value, loaderInfo.applicationDomain); }
我们可以在初始化的时候就自动启动Context。也可以选择在transitionIn()函数执行的时候再启动,这样能够引用到这个页面下包含的各项资源。但是在本例中两种启动时机都可以。













