如何在角度 Js 中管理所有控制器的用户详细信息
How to manage user details throughout all the controllers in angular Js
大家好,我想知道如何通过 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 指导我。
谢谢。
好吧,有多种选项供您使用:
$sessionStorage
、localStorage
、appConstant
、$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 本地存储与会话存储
- 在指令控制器中使用$attrs时出现问题
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- 如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用
- 如何在用户更新AngularJs中的控制器时刷新$state
- 如何在使用具有嵌套视图的 ui 路由器时添加用户控制器
- 如何在角度 Js 中管理所有控制器的用户详细信息
- 检测谁更改了模型(用户输入与控制器)angularjs
- 如何在 angular 的控制器中使用用户定义的类实例/对象
- 如何在用户使用护照登录的情况下测试帆.js控制器.js
- 根据用户权限向angularJs控制器添加方法
- 未重定向用户的控制器操作是从AJAX调用的
- Ruby on rails:如何从登录弹出窗口向rails控制器发送AJAX请求以及用户给定的凭据
- 如何将用户选择从一个控制器视图发送到另一个
- 在AngularJS中,在控制器之前加载用户上下文
- 如何在用户关闭浏览器时在控制器中运行方法
- 角度:在初始化控制器之前重新加载$rootscope用户
- AngularFire -等待直到用户数据在控制器中被检索到
- 从控制器中的导航器获取用户位置
- 在页面加载时,将存储在PHP会话中的用户id传递给AngularJS控制器
- 如何获取控制器中用户选择的单选按钮的值