1

フレックスベースのプロジェクトを開発するために puremvc フレームワークを使用しています。私の質問は、プロキシクラスとメディエータークラスの登録を遅らせる最良の方法は何ですか? 現在、起動コマンドで起動メディエーターを登録しています。

私のコードには:

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

ApplicationFacade.asでは、 StartupCommandに通知を送信しています。StartupCommandは StartupMediator を登録します

今私の質問:

  1. LoginMediatorを登録する時期と場所は ?
  2. LoginProxyを登録する時期と場所は ?
  3. LoginCommandに通知を送信する タイミング
  4. LoginMediatorLoginProxyLoginCommandに登録すると、

         public class LoginCommand は SimpleCommand を拡張します
    ICommand を実装します {
        パブリック関数をオーバーライドする execute(notification:INotification):void
        {
            Facade.registerProxy( 新しい LoginProxy() );
         Facade.registerMediator( new LoginMediator( app ) );
        } }

    LoginCommandの通知を 複数回 送信すると、 LoginProxyLoginMediatorの複数のインスタンスが作成されます。では、それを回避する方法は?

4

1 に答える 1

1
  1. startUpCommandで、現在ステージ上にビューがあるすべてのメディエーターを登録します。他のビューとメディエーターが必要になるまで登録するのを待ちます。

  2. startUpCommandにほぼすべてのプロキシを登録して、flashVarsから登録し、サーバーからデータをロードできるようにします。LoginProxyについては、StartUpCommandで作成して開始します。アプリケーションが大きくなったら、ログインメディエーターを設定するコマンドにアプリケーションを移動できます。

コードをswitchステートメントに入れて、実行中のコードが正しい通知に表示されるようにし、コマンドを削除することをお勧めします。

パブリック関数execute(notification:INotification):void {
switch(notification.getName()){
case AppFacade.START_UP:
// REMOVE START UP COMMAND
facade.removeCommand(notification.getName());をオーバーライドします。
壊す;
}
}

ファサードでhasProxyメソッドを使用して、2つのLoginProxiesを登録しないようにすることもできます。

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

于 2009-11-10T18:53:05.210 に答える