Миграция простого приложения Robotlegs (форма 1.5 до 2)

Я новичок в Robotlegs и немного борюсь с первыми шагами. Чтобы изучить веревки, я следовал за первой частью введения Джоэла Хукса и сейчас пытаюсь создать то же самое в RL2.

Мои текущие вопросы / проблемы:

  • Какой метод заменил startup() в контексте
  • В контексте я больше не могу просто использовать "mediatorMap"; Нужно ли для этого создавать экземпляр MediatorMap?
  • В нескольких примерах RL2 многие разработчики используют IConfig для настройки своего основного контекста; это требуется, хорошее соглашение или необязательно.
  • ... и каким образом контекст "настроен" через это?

Я провел большую часть дня в поисках решений. Я прошу прощения, если я пропустил очевидное. Заранее спасибо за любое подстрекательство.

часть основного класса (mxml)

xmlns:context="contexts.*"
    <fx:Declarations>
        <rl:ContextBuilder>
            <context:HelloWorldContext/>
        </rl:ContextBuilder>
</fx:Declarations>  

и (не дополняющий) контекст.as

public class HelloWorldContext extends Context
{       
    public function HelloWorldContext()
    {
        this.install(MVCSBundle);
        this.configure(HelloWorldConfig);

        mediatorMap.map(ButtonView).toMediator(ButtonMediator); // Error: mediatorMap not defined
    }
}

1 ответ

Решение

Какой метод заменил startup() в контексте в контексте

использование context.install установить расширение, которое вы хотите использовать. наиболее распространенным является MVCSBundle, использование context.configure с (new ContextView) Аргумент начнет инициализацию вашего контекста.

Я больше не могу просто использовать "mediatorMap"; Нужно ли для этого создавать экземпляр MediatorMap? вы можете внедрить IMediatorMap где угодно, например, в config [Inject] public var injector:IInjector;

[Inject]
public var mediatorMap:IMediatorMap;

[Inject]
public var commandMap:ISignalCommandMap;

В нескольких примерах RL2 многие разработчики используют IConfig для настройки своего основного контекста; это требуется, хорошее соглашение или необязательно. ... и каким образом контекст "настроен" через это? Вы можете создать свой собственный конфиг. Обычно там вы будете отображать свои команды, посредников и инъекции. Вы создаете один метод [PostConstruct], который будет вызывать все эти вещи:

Если вы реализуете IConfig внутри config, вам не понадобится тег [PostConstruct], потому что robotlegs будет вызывать функцию configure автоматически, как только зависимости будут введены.

    [PostConstruct]
    public function init():void {

        context.logLevel = LogLevel.DEBUG;
//        injector.fallbackProvider = new DefaultFallbackProvider();

        mapSignalCommands();
        mapMediators();
        mapInjection();

        context.afterInitializing(afterInit);

    }

в вашем случае у вас будет

_context:IContext;
public function MainApp()
{
    _context = new Context();
    _context.install(MVCSBundle);
    _context.configure(HelloWorldConfig,new ContextView(this));

        }

посредник идет в конфиге на mapMediators();

Другие вопросы по тегам