将$ rootScope值存储在localstorage中,并在页面刷新时在另一个控制器中使用它

时间:2016-07-31 05:42:27

标签: javascript angularjs

我有一个令牌生成器功能, 我必须在每个http调用中传递token参数,因此即使在刷新时我也需要完整地存储令牌值并使用它。 这是我的代码 -

 $scope.accessTokenFunction=function() { 
      data={

      }
         $http.post('API_url',data, config)
         .success(function(data, status) {

          $scope.PostDataResponse = data;
          $rootScope.access_token=$scope.PostDataResponse.access_token;
          console.log($rootScope.access_token);
           var access_token = $rootScope.access_token
                localStorage.setItem("access_token", access_token);
                localStorage.getItem("access_token");
                console.log(access_token);
                $rootScope.acc=access_token;


    })

 };

问题是var access_token无法在页面刷新时存储$ rootscope.access_token,但如果我使用

var access_token = 'jack'
I can use this value successfully even on page refresh inside other controllers.

我想要的是甚至在页面刷新时分配给access_token的$ rootScope值。 感谢任何帮助,谢谢

修改

我做了这样的改变                     var access_token = $ scope.access_token

                localStorage.data=access_token;
                console.log(localStorage.data);

在这样的另一个控制器中使用这个localStorage

myApp.controller().....
{
    $scope.access_token=localstorage.data;

}

我现在可以在控制器的任何地方使用$ scope.access_token和存储的值。

2 个答案:

答案 0 :(得分:1)

页面重新加载你的应用程序将被初始化,所以你的$ rootscope中什么都没有。相反,您可以将访问令牌存储到session或localstorage等中。

答案 1 :(得分:1)

这应该有效。你能为你的代码提供一个plunkr。

还有一件事,你的access_token是什么类型的? 我想,你知道,你需要在保存到localStorage之前对JSON对象进行字符串化,并在将其拉回时对其进行解析。

另外,我猜你应该使用sessionStorage,而不是localStorage。