[解決済み] 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();
});
});
そして、もちろん、その情報をディレクティブやテンプレートなど、好きなように使うことができます。これを(必要なものに合わせてカスタマイズして)メニューコントローラなどで繰り返すことができます。サービスの状態を変更すると、すべて自動的に更新されます。
より具体的なことは、あなたの実装に依存します。
お役に立てれば幸いです。
関連
-
[解決済み] 方法 $state.go()
-
[解決済み] ページロード時にAngularJSのコントローラ関数を実行する方法は?
-
[解決済み] Angular 1.2+ で ng-bind-html-unsafe を複製するために $sce.trustAsHtml(string) を使用するにはどうしたらよいですか?
-
[解決済み] AngularJS- 各ルートとコントローラでのログインと認証
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] 部分テンプレートとテンプレートの複雑なネスト
-
[解決済み] AngularJS 。非同期データでサービスを初期化する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのディープリンクとは何ですか?
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] controllerAs "プロパティを使用する理由は何ですか?
-
角型グローバル確認ボックス
-
[解決済み] AngularJs .$setPristineでフォームをリセットする
-
[解決済み] angularJSの::の意味するところ
-
[解決済み] 入力フィールドにフォーカスを当てるには?
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] AngularJSでコントローラを2回実行する場合の対処法
-
[解決済み] ng-repeat :単一フィールドによるフィルタリング