Frage

Ich bin mit PureMVC Rahmen flex basiertes Projekt zu entwickeln. Meine Frage bezieht sich auf das, was ist beste Weg, um Proxy-Klasse und Mediator Klasse verzögert Registrierung? Derzeit auf Startbefehl I Start Vermittler ist Registrierung.

Mein Code hat:

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

ApplicationFacade.as Ich sende Mitteilung an StartupCommand . StartupCommand Register StartupMediator .

Jetzt meine Frage:

  1. Wann und wo registrieren LoginMediator ?
  2. Wann und wo registrieren LoginProxy ?
  3. Wenn die Benachrichtigung erfolgt an LoginCommand ?
  4. Wenn wir Register LoginMediator und LoginProxy in LoginCommand wie         

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

    Wenn ich nun Mitteilung sende für LoginCommand mehrere Male es dann erstellt mehrere instace von LoginProxy und LoginMediator . so wie um es zu vermeiden?

War es hilfreich?

Lösung

  1. In meinem startUpCommand ich alle Vermittler registrieren, die zur Zeit Blick auf die Bühne haben. Ich warte alle anderen Ansichten und Vermittler zu registrieren, bis sie gebraucht werden.

  2. Ich melde ich fast alle Proxies in meinem startUpCommand, so dass sie von flashVars und Daten von dem Server registrieren. Was Ihre LoginProxy würde ich es in Ihrem StartUpCommand erstellen Sie den Start. Sobald Ihre Anwendung wächst man es auf einen Befehl bewegen können, die Ihre Login Mediator einrichtet.

Ich würde vorschlagen, Ihren Code in einer switch-Anweisung setzt Ihre Ausführung von Code auf der richtigen Benachrichtigung zu gewährleisten und den Befehl zu entfernen.

  

außer Kraft setzen public function execute (Meldung: INotification): void {
      Schalter (notification.getName ()) {
      Fall AppFacade.START_UP:
    // REMOVE START COMMAND
  facade.removeCommand (notification.getName ());
  break;
  }
  }

Sie können auch die hasProxy Methode an der Fassade verwenden, um Sie nicht zwei LoginProxies sicherzustellen, dass Sie registrieren.

  

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top