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

时间:2016-03-09 03:19:10

标签: javascript angularjs

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

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指导我。

谢谢。

3 个答案:

答案 0 :(得分:2)

嗯,您可以使用各种选项:
$sessionStoragelocalStorageappConstant$localStorage等等。

  

您甚至可以使用Factory和分享控制器之间的数据   服务。

因为您只想在整个控制器中知道变量。我将给你一个使用$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 CALL:

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

答案 1 :(得分:0)

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

compare_products_path

答案 2 :(得分:0)

如果您想要快速解决方案,我认为您可以将其存储在$rootScopeAngularJS using $rootScope as a data store。 (可能你不会经常更新它)。

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