1. ホーム
  2. angularjs

[解決済み] AngularJSで現在のユーザーコンテキストを保存するにはどうしたらいいですか?

2023-03-07 05:06:30

質問

AuthServiceがあり、ユーザをログインさせると、ユーザjsonオブジェクトが返されます。私がしたいことは、そのオブジェクトを設定し、ページを更新することなく、アプリケーション全体にすべての変更を反映させることです(ログイン/ログアウトの状態)。

AngularJSでどのようにこれを達成するのでしょうか?

どのように解決するのですか?

最も簡単な方法は、サービスを利用することです。例えば

app.factory( 'AuthService', function() {
  var currentUser;

  return {
    login: function() { ... },
    logout: function() { ... },
    isLoggedIn: function() { ... },
    currentUser: function() { return currentUser; }
    ...
  };
});

そして、これを任意のコントローラで参照することができます。次のコードは、サービスからの値の変化を (指定された関数を呼び出すことで) 監視し、変化した値をスコープに同期させるものです。

app.controller( 'MainCtrl', function( $scope, AuthService ) {
  $scope.$watch( AuthService.isLoggedIn, function ( isLoggedIn ) {
    $scope.isLoggedIn = isLoggedIn;
    $scope.currentUser = AuthService.currentUser();
  });
});

そして、もちろん、その情報をディレクティブやテンプレートなど、好きなように使うことができます。これを(必要なものに合わせてカスタマイズして)メニューコントローラなどで繰り返すことができます。サービスの状態を変更すると、すべて自動的に更新されます。

より具体的なことは、あなたの実装に依存します。

お役に立てれば幸いです。