как лучше всего зарегистрировать прокси и посредника в flex puremvc framework?

StackOverflow https://stackoverflow.com/questions/1706600

  •  19-09-2019
  •  | 
  •  

Вопрос

Я использую фреймворк puremvc для разработки проекта на основе flex.Мой вопрос связан с тем, какой наилучший способ отложить регистрацию прокси-класса и класса-посредника?В настоящее время при запуске команды я регистрирую startup mediator.

Мой код имеет :

  1. ApplicationFacade.as
  2. StartupCommand.as
  3. StartupMediator.as
  4. LoginCommand.as
  5. LoginMediator.as
  6. LoginProxy.as
  7. LoginView.as

В ApplicationFacade.as Я отправляю уведомление на Команда стартапа. Команда стартапа регистры Посредник стартапа.

Теперь мой вопрос:

  1. Когда и где регистрироваться Посредник для входа в систему ?
  2. Когда и где регистрироваться LoginProxy Логинпрокси ?
  3. Когда отправлять уведомление на Команда входа в систему ?
  4. Если мы зарегистрируемся Посредник для входа в систему и LoginProxy Логинпрокси в Команда входа в систему Нравится

         public class LoginCommand extends SimpleCommand
    implements ICommand {
        override public function execute(notification:INotification):void
        {
            facade.registerProxy( new LoginProxy() );
         facade.registerMediator( new LoginMediator( app ) );
        } } 

    Теперь, если я отправляю уведомление для Команда входа в систему несколько раз, то это создает несколько instace из LoginProxy Логинпрокси и Посредник для входа в систему.Итак, как избежать этого?

Это было полезно?

Решение

  1. В моей startUpCommand я регистрирую всех посредников, у которых в данный момент есть мнения на сцене.Я жду, чтобы зарегистрировать любые другие мнения и посредников, пока они не понадобятся.

  2. Я регистрирую почти все прокси в моей startUpCommand, чтобы они могли регистрироваться из flashVars и загружать данные с сервера.Что касается вашего LoginProxy, я бы создал его в вашей StartUpCommand, чтобы вы могли начать.Как только ваше приложение вырастет, вы можете переместить его в команду, которая настраивает ваш посредник для входа в систему.

Я бы предложил поместить ваш код в инструкцию switch, чтобы убедиться, что ваш исполняемый код получает правильное уведомление, и удалить команду.

переопределение выполнения публичной функции (уведомление: инициализация): недействительно {
переключатель (notification.getName()) {
дело AppFacade.ЗАПУСК_UP:
// УДАЛИТЬ КОМАНДУ ЗАПУСКА
фасад.RemoveCommand(уведомление.getName() );
перерыв;
}
}

Вы также можете использовать метод hasProxy на фасаде, чтобы гарантировать, что вы не зарегистрируете два LoginProxies.

если(фасад.hasProxy(LoginProxy.NAME )) {
фасад.Зарегистрироватьproxy ...
}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top