页面刷新后保留角度变量

时间:2014-09-30 10:47:14

标签: angularjs page-refresh

我试图找出一种方法来保持我的angular变量与页面刷新/跨控制器。我的工作流程是,

  • 用户通过Facebook登录并获取访问令牌
  • 用户访问令牌将与每个请求一起使用

我试过两种方法,

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很陌生,在页面刷新后无法找到保留数据的方法

任何帮助将不胜感激

5 个答案:

答案 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

了解更多细节 https://docs.angularjs.org/api/ngCookies

答案 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