Как обновить значение массива с тем же ключом в хранилище сессии - PullRequest
0 голосов
/ 14 мая 2018

У меня есть две вкладки в моем интерфейсе администратора. Я храню ответ в моем хранилище сеанса. Когда я делаю обновление любых записей на вкладке или вставляю также новую запись, то же самое должно отражаться и в хранилище. Но в настоящее время изменения не отражаются в хранилище. Я старался изо всех сил, чтобы разобраться, но я не смог добиться успеха. Любая помощь / совет с благодарностью.

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;                    
 }                 
})

Ответы [ 2 ]

0 голосов
/ 15 мая 2018
          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;
            }
          });
0 голосов
/ 14 мая 2018

В первый раз это произойдет, потому что ! LocalStorageService.get ('Pool') становится истинным. Но в следующий раз он вернет false, поскольку память уже имеет значение, он не попадет внутрь условия if. чтобы решить эту проблему, удалите хранилище сеансов 'Pool' , чтобы разрешить выполнение Role.getPool (). success (function (data) {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...