2013-08-09 6 views
0

상황에 따라 부모 - 자식 관계가 표시 목록과 관련이없는 경우가 조금 있습니다. 각 뷰는 ViewLoader에로드되어 다음 확장자로 뷰의 컨텍스트를 설정합니다.중첩 된보기를 제거 할 때 RobotLegs에 오류가 발생했습니다.

public function extend(context:IContext):void 
    { 
     context.install( 
      TraceLoggingExtension, 
      VigilanceExtension, 
      InjectableLoggerExtension, 
      ContextViewExtension, 
      EventDispatcherExtension, 
      DirectCommandMapExtension, 
      EventCommandMapExtension, 
      LocalEventMapExtension, 
      ViewManagerExtension, 
      StageObserverExtension, 
      MediatorMapExtension, 
      ViewProcessorMapExtension, 
      StageCrawlerExtension, 
      StageSyncExtension 
     ).install(new ModularityExtension(false, true)); 

     context.configure(ContextViewListenerConfig); 

     var viewProcessor:IViewProcessorMap = context.injector.getInstance(IViewProcessorMap); 
     viewProcessor.map(IViewLoader).toProcess(new MediatorCreator(ViewLoaderMediator)); 

    } 

이 모든 것이 정상적으로 작동합니다. 내가 부모되기 전에 제거 할 아이를 강제로 시도

TypeError: Error #1006: value is not a function. 
    at robotlegs.bender.extensions.viewProcessorMap.impl::ViewProcessorFactory/runAllUnprocessors()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/extensions/viewProcessorMap/impl/ViewProcessorFactory.as:92] 
    at robotlegs.bender.extensions.viewProcessorMap::ViewProcessorMapExtension/beforeDestroying()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/extensions/viewProcessorMap/ViewProcessorMapExtension.as:72] 
    at MessageRunner/next()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/MessageDispatcher.as:152] 
    at MessageRunner/run()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/MessageDispatcher.as:135] 
    at robotlegs.bender.framework.impl::MessageDispatcher/dispatchMessage()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/MessageDispatcher.as:87] 
    at robotlegs.bender.framework.impl::LifecycleTransition/enter()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/LifecycleTransition.as:191] 
    at robotlegs.bender.framework.impl::Lifecycle/destroy()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/Lifecycle.as:173] 
    at robotlegs.bender.framework.impl::Context/destroy()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/framework/impl/Context.as:183] 
    at robotlegs.bender.extensions.contextView::StageSyncExtension/onRemovedFromStage()[/Development/Projects/Robotlegs/robotlegs-framework/src/robotlegs/bender/extensions/contextView/StageSyncExtension.as:92] 
    at flash.display::DisplayObjectContainer/removeChild() 
    at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::$removeChild()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:7312] 
    at mx.core::UIComponent/removeChild()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:7219] 
    at spark.components::Group/http://www.adobe.com/2006/flex/mx/internal::elementRemoved()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/Group.as:1732] 
    at spark.components::Group/removeElementAt()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/Group.as:1479] 
    at spark.components::Group/removeAllElements()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/Group.as:1498] 
    at ViewLoader/applyViewImpl() 
    at ViewLoader/commitProperties() 
    at mx.core::UIComponent/validateProperties()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:8227] 
    at mx.managers::LayoutManager/validateProperties()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:605] 
    at mx.managers::LayoutManager/doPhasedInstantiation()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:821] 
    at mx.managers::LayoutManager/doPhasedInstantiationCallback()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:1188] 

: 두 개의보기가 중첩되어 그러나 부모가 무대에서 제거, 나는 아이 뷰의 컨텍스트에 대한 viewProcessor에서 다음과 같은 오류가 ,하지만 그 오류를 방지하지는 않습니다.

답변

0

이 문제는 여러 중재자가 각 ViewLoader에 매핑되어 발생했습니다. Viewloader가 두 번 중첩되면 조상 컨텍스트 둘 다 매핑을 추가합니다. MediatorCreator의 동일한 인스턴스를 사방에 사용하는 것이 쉬운 수정이었으며,이 자체를 관리합니다.

관련 문제