1

私がログインし、成功したら、そのログイン ID を保存し、ナビゲーション/ユーザー管理のために他のすべてのコントローラーに渡したいというシナリオを試しています。グローバル変数の設定と同様に、ストア ワンスはどこでも使用できます。

angularjs共有サービス手法を使用していますが、他のコントローラーでブロードキャスターのログインIDを選択していません。

高レベルの詳細:

1)ログインHTMLは、ユーザー認証のためにバックエンドサーバーを呼び出す場所からログインコントローラーを呼び出します2)成功すると、共有サービスを介してLoginIDをブロードキャストしました3)ログインHTMLから、ページはOrderMenu Htmlに移動し、ユーザーIDをフェッチしようとしているOrderMenuコントローラーを呼び出しますシェアードサービスで放送されました。4) ただし、Order Menu コントローラでは、表示される UserID は初期化された値です。つまり、app.factory が再度呼び出され、Broadcasted 値を初期化しているように見えます。

app.factory のリロードを止めたい。ここで何かが欠けているように見えます.どんな考えでもここで本当に役に立ちます.

4

1 に答える 1

1

これは、あなたが説明したものの簡単な実装例です。そして、それは機能しているようです。

http://plnkr.co/edit/SPAB4W

私のサービスは次のように定義されています。

app.factory('UserAuth', function() {
  return {
    userId: 'unknown',
    authenticate: function( name ) {
      // do server side authentication here...
      this.userId = 'authenticatedUserId_Of_' + name;
    }
  };
});

この例では、2 番目のコントローラー ( OrderCtrl) が呼び出されたときに、 UserAuth.userId再初期化されず、取得した認証の userId を保持します。

コードを共有したい場合があります。

于 2012-09-19T22:31:44.627 に答える