页面刷新后保留角度变量

sam*_*207 20 page-refresh angularjs

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

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

我尝试了两种方法,

1 - 将令牌分配给rootScope 不工作

2 - 使用a 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);
Run Code Online (Sandbox Code Playgroud)

但问题是,如果我刷新页面,则Authenticate.getToken()变为空白.我很新,angular并且在页面刷新后无法找到保留数据的方法

任何帮助将非常感激

aac*_*kin 19

你可以用localStorage.它真的很容易使用.

var token = "xxx";
localStorage.setItem("token", token);
localStorage.getItem("token"); //returns "xxx"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,让它与https://github.com/grevory/angular-local-storage一起工作 (2认同)

bml*_*ite 11

刷新页面时,所有JavaScript上下文都将丢失(包括保存在变量中的所有数据).

维护从一个会话到另一个会话的信息的一种方法是使用浏览器的localStorage.在您的情况下,您可能想要检查ngStorage.


小智 5

我使用 $window.localStorage 做了同样的事情。

这有点类似于接受的答案。

var token = "xxx";
$window.localStorage.setItem("token",token);
$window.localStorage.getItem("token"); //returns "xxx"
$window.localStorage.removeItem("token"); //deletes token
Run Code Online (Sandbox Code Playgroud)