javascript - How to update session storage data without refreshing page? -
i creating spa web application , use sessionstorage store current user information in browser. use chrome test. in test progress found when user login sessionstorage updated in console when cannot access added value until refresh page.
how can resolve problem?
this angular service responsible storing , retrieving currentuser in sessionstorage :
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 ; } };
}]);
this store same time retrieving current user must refresh page. , because of spa impossible me :(
your issue linked fact use 1 promise ($q.deffer) instead of creating 1 @ each call
here service updated (i use $q.when return value without creating new promise)
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'); }; }]);
i prefer use setitem , getitem method on sessionstorage ...
a working jsfiddle exemple : https://jsfiddle.net/royto/pk8f05la/
Comments
Post a Comment