如何在角度 Js 中管理所有控制器的用户详细信息

How to manage user details throughout all the controllers in angular Js

本文关键字:控制器 用户 详细信息 管理所 Js      更新时间:2023-09-26

大家好,我想知道如何通过 Angular Js 中的视图控制器管理用户会话 ID、名称。

Senario是我做了http调用并获取用户ID和名称。现在我想在任何控制器中随时使用它。

我尝试使用角度值服务,例如设置

app.value("user",{user_id:"0",user_name:"blank"})

和 HTTP 调用在控制器中的位置

app.controller("exampleCtrl",function($http,user){
      user.user_id = data.user_id;
      //lets say the user id is 4.
      //and now user.user_id should be 4 as well
})

现在在另一个控制器中

app.controller("nextCtrl",function(user){
    console.log(user.user_id);
    //gives me 0 which should be 4?
})

我虽然它会给我 4。

我希望你对我想要做的事情有大致的了解有没有另一种做事的方法?还是我做错了?pLease 指导我。

谢谢。

好吧,有多种选项供您使用:
$sessionStoragelocalStorageappConstant$localStorage等。

您甚至可以使用工厂和 服务业。

因为您只希望变量在整个控制器中都是已知的。我将给你一个简单的例子来使用$sessionStorage

为了使用$sessionStorage$localStorage,您需要注入ngStorage

首先在您的index.html中,包括来源:

 <script src="https://rawgithub.com/gsklee/ngStorage/master/ngStorage.js"></script>  

然后在模块定义中,注入ngStorage

var app = angular.module('Your App Name', ['ngStorage']);

您的 HTTP 调用:

app.controller("exampleCtrl",function($http,user,$sessionStorage){
      user.user_id = data.user_id;
      $sessionStorage.user_id = data.user_id;
      //lets say the user id is 4.
      //and now user.user_id should be 4 as well
})  

而且,在另一个controller中,您可以像下面这样访问它:

app.controller("nextCtrl",function(user,$sessionStorage){
   console.log($sessionStorage.user_id);
 //gives you 4 which you can then assign to any var you like.
    console.log(user.user_id);
    //gives me 0 which should be 4?
})  

以下 PLUNKER 演示了如何使用factory$sessionStorage在控制器之间共享数据:
http://plnkr.co/edit/XPHwKQYcSCk3GSilvFtE?p=preview

Angular有一个名为ngCookies的模块,它允许你与cookie进行交互,而且使用起来很简单!

var app = angular.module("myApp", ["ngCookies"]);
ngApp.factory("userPersistenceService", [
"$cookies", function($cookies) {
    var userName = "";
    return {
        setCookieData: function(username) {
            userName = username;
            $cookies.put("userName", username);
        },
        getCookieData: function() {
            userName = $cookies.get("userName");
            return userName;
        },
        clearCookieData: function() {
            userName = "";
            $cookies.remove("userName");
        }
    }
}
]);
如果你

想要一个快速的解决方案,我想你可以把它存储在$rootScope:使用 $rootScope 作为数据存储的 AngularJS。(可能您不会经常更新它)。

如果您不介意添加依赖项,请查看此 Angular 模块:https://github.com/gsklee/ngStorage。这使您可以最好地控制存储数据的生命周期:HTML5 本地存储与会话存储