我试图找出一种方法来保持我的angular
变量与页面刷新/跨控制器。我的工作流程是,
我试过两种方法,
1 - 将令牌分配给rootScope
不工作
2 - 使用factory
#app.js
'use strict';
angular.module('recipeapp', [])
.run(['$rootScope', '$injector', 'Authenticate', function($rootScope,$injector, Authenticate){
$injector.get("$http").defaults.transformRequest = function(data, headersGetter) {
$injector.get('$http').defaults.headers.common['auth-token'] = Authenticate.getToken();
}
}]);
#factory
'use strict';
angular.module('recipeapp')
.factory('Authenticate', function(){
var factory = {};
var accessToken = "";
factory.setToken = function(token) {
accessToken = token;
}
factory.getToken = function() {
return accessToken;
}
return factory;
})
#facebook controller
I set the the token with every successful login
Authenticate.setToken(data.app_token);
但问题是,如果我刷新页面,Authenticate.getToken()
将变为空白。我对angular
很陌生,在页面刷新后无法找到保留数据的方法
任何帮助将不胜感激
答案 0 :(得分:18)
您可以使用localStorage
。这很容易使用。
var token = "xxx";
localStorage.setItem("token", token);
localStorage.getItem("token"); //returns "xxx"
答案 1 :(得分:11)
刷新页面时,所有JavaScript上下文都将丢失(包括保存在变量中的所有数据)。
从一个会话到另一个会话维护信息的一种方法是使用浏览器的localStorage。在您的情况下,您可能想要检查ngStorage。
答案 2 :(得分:4)
我使用$ window.localStorage做了同样的事。
有点类似于接受的答案。
var token = "xxx";
$window.localStorage.setItem("token",token);
$window.localStorage.getItem("token"); //returns "xxx"
$window.localStorage.removeItem("token"); //deletes token
答案 3 :(得分:3)
你可以使用cookies
放简单变量
$cookies.put('user', 'abc');
保存对象
$cookies.putObject('objSocket', anyObject);
并从cookies中获取数据
$cookies.getObject('objSocket');
和
$cookies.get('user');
使用上面的代码cookies.js cdnjs是:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular-cookies.min.js"></script>
现在将$cookies
注入您的控制器并ngCookies
注入您的 app.js
答案 4 :(得分:0)
use `localStorage.setItem("key",value);` to set the value.
use `localStorage.getItem("key");`to get the value.
use `localStorage.clear();`to clear the value which is set