我的管理界面中有两个标签。我将响应存储在会话存储中。当我更新选项卡中的任何记录或者我也插入新记录时,同样的事情也应该反映在存储中。但目前,这些变化并没有反映在存储中。我尽力排练,但我无法成功。任何帮助/建议都非常感谢。
Angularjs:
$scope.Pool = [];
if (!localStorageService.get('Pool')) {
Role.getPool().success(function(data) {
if (data.responseCode === 0) {
_.forEach(data.response.demoPool, function(value, key) {
dataObj = {};
dataObj.id = value.poolId;
dataObj.value = value.poolName;
$scope.Pool.push(dataObj);
});
localStorageService.set('Pool', $scope.Pool);
} else {
$scope.alerts.alert = true;
$scope.alerts.type = 'danger';
$scope.alerts.msg = data.errorMsg;
}
})
答案 0 :(得分:2)
第一次会这样做,因为!localStorageService.get('Pool')变为true。但是下次它会返回false因为存储已经有值,它将不会进入if条件。所以要解决此问题,请删除会话存储'池'以允许执行 Role.getPool()。success(function(data){
答案 1 :(得分:1)
if (!sessionStorage.length) {
// Ask other tabs for session storage
localStorage.setItem('getSessionStorage', Date.now());
};
window.addEventListener('storage', function (event) {
switch (event.key) {
case 'getSessionStorage':
// Some tab asked for the sessionStorage -> send it
localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
localStorage.removeItem('sessionStorage');
break;
case 'sessionStorage':
// sessionStorage is empty -> fill it
var data = JSON.parse(event.newValue);
for (key in data) {
sessionStorage.setItem(key, data[key]);
}
break;
}
});