【问题标题】:retain angular variables after page refresh页面刷新后保留角度变量
【发布时间】:2014-09-30 10:47:14
【问题描述】:

我正试图找出一种方法来保持我的 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 还很陌生,无法找到在页面刷新后保留数据的方法

任何帮助将不胜感激

【问题讨论】:

    标签: angularjs page-refresh


    【解决方案1】:

    您可以使用localStorage。它真的很容易使用。

    var token = "xxx";
    localStorage.setItem("token", token);
    localStorage.getItem("token"); //returns "xxx"
    

    【讨论】:

    • 不适合我,收到此错误:- Uncaught TypeError: Cannot set property 'title' of undefined
    【解决方案2】:

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

    维护从一个会话到另一个会话的信息的一种方法是使用浏览器的本地存储。在您的情况下,您可能需要检查ngStorage

    【讨论】:

      【解决方案3】:

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

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

      var token = "xxx";
      $window.localStorage.setItem("token",token);
      $window.localStorage.getItem("token"); //returns "xxx"
      $window.localStorage.removeItem("token"); //deletes token
      

      【讨论】:

        【解决方案4】:

        你可以使用cookies

        放简单的变量

        $cookies.put('user', 'abc');
        

        保存对象

        $cookies.putObject('objSocket', anyObject);
        

        并从 cookie 中取回数据使用

        $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

        【讨论】:

        • 本地存储是一种安全的方法吗?必须有一种方法可以永久存储值,例如声明 const 标识符。因为我的情况是一样的。请帮忙
        【解决方案5】:
        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
        

        【讨论】:

        • 本地存储是一种安全的方法吗?必须有一种方法可以永久存储值,例如声明 const 标识符。因为我的情况是一样的。请帮忙
        猜你喜欢
        • 2021-08-21
        • 1970-01-01
        • 2011-08-23
        • 2020-08-11
        • 2017-03-05
        • 1970-01-01
        • 2013-04-18
        相关资源
        最近更新 更多