Javascript 如何在不刷新页面的情况下更新会话存储数据?
我正在创建SPA web应用程序,并使用SessionStorage在浏览器中存储当前用户信息。我用Chrome做测试。 在测试过程中,我发现当用户成功登录时,会话存储将在控制台中更新,但在刷新页面之前,我无法访问此附加值 我如何解决这个问题 这是我的angular服务,负责在sessionStorage中存储和检索currentUser:Javascript 如何在不刷新页面的情况下更新会话存储数据?,javascript,angularjs,html,Javascript,Angularjs,Html,我正在创建SPA web应用程序,并使用SessionStorage在浏览器中存储当前用户信息。我用Chrome做测试。 在测试过程中,我发现当用户成功登录时,会话存储将在控制台中更新,但在刷新页面之前,我无法访问此附加值 我如何解决这个问题 这是我的angular服务,负责在sessionStorage中存储和检索currentUser: app.service("sessionStorageService", ["$window","$q", function ($window, $q) {
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 ;
}
};
}]))
此存储同时成功,但为了检索当前用户,我必须刷新页面。因为spa,我不可能:(您的问题与您使用1个承诺($q.deffer)而不是每次通话都创建一个承诺有关 这里更新了您的服务(我使用$q.when在不创建新承诺的情况下返回值) 我更喜欢在sessionStorage上使用setItem和getItem方法
一个有效的JSFIDLE示例:您的问题与您使用1个承诺($q.deffer)而不是在每次调用时创建一个承诺有关 这里更新了您的服务(我使用$q.when在不创建新承诺的情况下返回值) 我更喜欢在sessionStorage上使用setItem和getItem方法
一个正在工作的JSFIDLE示例:你能发布你的代码吗?你能发布你的代码吗?你让我快乐:)你让我快乐:)
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');
};
}]);