was ist beste Ort, Proxy und Mediator in flex PureMVC Rahmen registrieren?
-
19-09-2019 - |
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:
- ApplicationFacade.as
- StartupCommand.as
- StartupMediator.as
- LoginCommand.as
- LoginMediator.as
- LoginProxy.as
- LoginView.as
ApplicationFacade.as Ich sende Mitteilung an StartupCommand . StartupCommand Register StartupMediator .
Jetzt meine Frage:
- Wann und wo registrieren LoginMediator ?
- Wann und wo registrieren LoginProxy ?
- Wenn die Benachrichtigung erfolgt an LoginCommand ?
-
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?
Lösung
-
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.
-
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 ...
}