quel est le meilleur endroit pour vous inscrire proxy et médiateur dans le cadre flex PureMVC?

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

  •  19-09-2019
  •  | 
  •  

Question

J'utilise le cadre de PureMVC pour le développement de projet à base de flex. Ma question est liée à ce qui est le meilleur moyen de l'enregistrement retardé classe proxy et la classe de médiateur? À l'heure actuelle sur commande de démarrage Je suis inscris médiateur de démarrage.

Mon code a:

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

ApplicationFacade.as J'envoie une notification à StartupCommand . StartupCommand registres StartupMediator .

Ma question:

  1. Quand et où vous inscrire LoginMediator ?
  2. Quand et où vous inscrire LoginProxy ?
  3. Quand envoyer une notification à LoginCommand ?
  4. Si nous registres LoginMediator LoginProxy LoginCommand comme         

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

    Maintenant, si je vous envoie une notification pour LoginCommand plusieurs fois alors il crée plusieurs instace de LoginProxy et LoginMediator . Alors, comment pour l'éviter?

Était-ce utile?

La solution

  1. Dans mon startUpCommand je me inscrire tous les médiateurs qui ont actuellement des vues sur scène. J'attends d'enregistrer toutes autres vues et médiateurs jusqu'à ce qu'ils soient nécessaires.

  2. J'enregistre presque tous les proxies dans mon startUpCommand afin qu'ils puissent enregistrer à partir flashVars et charger des données à partir du serveur. Quant à votre LoginProxy je crée dans votre StartUpCommand pour vous aider à démarrer. Une fois que votre application grandit, vous pouvez le déplacer à une commande qui met en place votre médiateur de connexion.

Je vous suggère de mettre votre code dans une instruction switch pour assurer votre exécution de code sur la notification correcte et la suppression de la commande.

  

override public function execute (notification: INotification): void {
      interrupteur (notification.getName ()) {
      cas AppFacade.START_UP:
    // RETIRER DEMARRAGE DE COMMANDE
  facade.removeCommand (notification.getName ());
  break;
  }
  }

Vous pouvez également utiliser la méthode hasProxy sur la façade pour vous assurer de ne pas enregistrer deux LoginProxies.

  

if (facade.hasProxy (LoginProxy.NAME)) {
         facade.registerProxy ...
  }

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top