【问题标题】:How to update session storage data without refreshing page?如何在不刷新页面的情况下更新会话存储数据?
【发布时间】:2016-01-13 14:20:50
【问题描述】:

我正在创建一个 SPA Web 应用程序并使用 SessionStorage 将当前用户信息存储在我的浏览器中。我使用 Chrome 进行测试。 在测试过程中,我发现当用户登录成功时,SessionStorage 将在控制台中更新,但是当我在刷新页面之前无法访问这个附加值时。

我该如何解决这个问题?

这是我的 Angular 服务,负责在 sessionStorage 中存储和检索 currentUser :

app.service("sessionStorageService", ["$window","$q", function ($window, $q) {
var deferred = $q.defer();
this.setCurrentUser = function (user) {
    $window.sessionStorage["currentUser"] = JSON.stringify(user);
},
    this.getCurrentUser = function () {
        if ($window.sessionStorage["currentUser"]) {
            console.log("bega") ;
            deferred.resolve(JSON.parse($window.sessionStorage["currentUser"]));
            return deferred.promise;
        } else {
            console.log("bega1") ;
            deferred.reject("No Login User");
            return deferred.promise ;
        }
    };

}]);

这家商店同时成功,但为了检索当前用户,我必须刷新页面。而且因为水疗中心,我不可能:(

【问题讨论】:

  • 你能贴出你的代码吗

标签: javascript angularjs html


【解决方案1】:

您的问题与您使用 1 个 promise ($q.defer) 而不是在每次调用时创建一个的事实有关

这里你的服务更新了(我使用 $q.when 来返回值而不创建新的承诺)

app.service('sessionStorageService', ['$window', '$q', function ($window, $q) {
    this.setCurrentUser = function (user) {
        $window.sessionStorage.setItem('currentUser', JSON.stringify(user));
    },
    this.getCurrentUser = function () {
        if ($window.sessionStorage.getItem('currentUser')) {
            return $q.when(JSON.parse($window.sessionStorage.getItem('currentUser')));
        } else {
            var deferred = $q.defer();
            deferred.reject('No Login User');
            return deferred.promise;
        }
    };
    this.clearCurrentUser = function () {
        $window.sessionStorage.removeItem('currentUser');
    };
}]);

我更喜欢在 sessionStorage 上使用 setItem 和 getItem 方法...

一个有效的 jsfiddle 示例:https://jsfiddle.net/royto/pk8f05La/

【讨论】:

  • 你让我的一天快乐:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2018-03-24
  • 2014-08-18
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多