如何访问整个项目的 angularjs sessionStorage 值?

How to access angularjs sessionStorage value to entire project?

我需要整个 project.so 的登录值 我正在使用 rootScope,但是如果刷新我的页面,rootScope 值将被破坏。 所以我使用 AngularJS sessionStorage 而不是 rootScope,现在值设置成功了。现在我需要为整个项目使用 sessionStorage 值。

如何在任何需要的地方使用 sessionStorage 值。我正在寻找积极的重播。

控制器

if(response.data.status != null)
{   
    scope.User=response;
    rootScope.UserId=response.data.UserId;
     $window.sessionStorage.setItem("id",response.data.UserId);
     scope.id = $window.sessionStorage.getItem("id");
    state.go("userHome");
}

谢谢..!

我会在 "app.run" 内的 $rootScope 上创建访问器:

angular.module("myApp").run(['$rootScope', function($rootScope){
    var id = null;    
    $rootScope.getId = function(){
        if (!id) id = sessionStorage.getItem('id');

        return id;        
    };

    $rootScope.setId = function(userId) {
        id = userId;
        sessionStorage.setItem('id', userId);
    };

}]);
  • 这样一来,您就可以继续在视图中使用您的 ID,只需拨打电话即可。
  • 如果 $rootScope 没有设置值,您不会忘记检查 sessionStorage。
  • 您不必每次需要 id 时都访问 sessionStorage(查询会话存储比获取堆上的项目慢得多)

您只需像下面这样使用它:

if(response.data.status != null)
{   
    scope.User=response;
    rootScope.setId(response.data.UserId);
    scope.id = rootScope.getId();
    state.go("userHome");
}

将其访问到您的视图中:

版本 1.5+ :

你可以简单地将它绑定到 $rootscope 提供的 "controller as" :

<div>{{$root.getId()}}</div>

版本 1.5- :

至于你从来没有一个方法或 属性 绑定到一个名为 getId$scope,由于范围继承,以下将起作用(如果你不知道angular 中的作用域继承,你真的应该花点时间谷歌一下)

<div>{{getId()}}</div>