Pergunta

Estou usando a estrutura PureMVC para desenvolver um projeto baseado em flex. Minha pergunta está relacionada ao que é a melhor maneira de atrasar a classe de proxy e a classe mediadora? Atualmente no comando de inicialização, estou registrando o mediador de inicialização.

Meu código tem:

  1. ApplicationFacade.as
  2. StartupCommand.as
  3. StartupMediAtor.a
  4. Logincommand.As
  5. LoginMediAtor.As
  6. LoginProxy.a
  7. LoginView.as

Dentro ApplicationFacade.as Estou enviando notificação para StartupCommand. StartupCommand registros StartupMediAtor.

Agora minha pergunta:

  1. Quando e onde se registrarLoginMediator ?
  2. Quando e onde se registrarLoginProxy ?
  3. Quando enviar notificação paraLogincommand ?
  4. Se registrarmos LoginMediator eLoginProxy dentro Logincommand Curti

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

    Agora, se estou enviando notificação paraLogincommand várias vezes, então ele cria múltiplos instacos deLoginProxy e LoginMediator. Então, como evitá -lo?

Foi útil?

Solução

  1. No meu startupCommand, registro todos os mediadores que atualmente têm visualizações no palco. Espero registrar outras visualizações e mediadores até que sejam necessários.

  2. Registro quase todos os proxies no meu startupCommand para que eles possam se registrar no Flashvars e carregar dados do servidor. Quanto ao seu loginProxy, eu o criaria no seu startupCommand para começar. Quando o seu aplicativo crescer, você pode movê -lo para um comando que configure seu mediador de login.

Eu sugiro colocar seu código em uma instrução Switch para garantir que seu código de execução na notificação correta e removendo o comando.

Substituir a função pública Execute (Notificação: Inotification): void {
switch (notification.getName ()) {
case appfacade.start_up:
// Remova o comando de inicialização
Facade.RemoveCommand (notification.getName ());
parar;
}
}

Você também pode usar o método Hasproxy na fachada para garantir que você não registre dois LoginProxies.

if (fachada.hasproxy (loginproxy.name)) {
Facade.RegisterProxy ...
}

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top