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

时间:2017-06-16 11:51:20

标签: javascript angularjs session storage

我需要整个项目的登录值。所以我使用rootScope,但如果我的页面被刷新,rootScope值将被销毁。 所以我没有使用rootScope,而是使用AngularJS sessionStorage,现在成功地设置了值集。现在我需要为整个项目使用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");
}

谢谢..!

1 个答案:

答案 0 :(得分:2)

我会在" 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提供:

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

版本1.5-:

如果您从未将方法或属性绑定到名为$scope的{​​{1}},则由于范围继承(如果您不了解角度范围继承),以下内容将起作用,你真的应该花一些时间谷歌搜索它)

getId