Ресурсы с параметром, Как обновить параметры при входе в систему? - PullRequest
0 голосов
/ 17 мая 2018

Я пишу угловое приложение 1.6.9, которое использует ресурсы для взаимодействия с REST PHP Backend.

Ресурсы имеют некоторые параметры:

angular.module('app').factory('BookResource', function($resource, $localStorage) {
  return $resource('/rest/:roleId/ul/:ulId/book/:id',
    {
      roleId: $localStorage.currentUser.roleId,
      ulId  : $localStorage.currentUser.ulId,
      id    : '@id'
    }, {
    update: {
      method: 'PUT' // this method issues a PUT request
    }
  });
});

Здесь вы можете видеть, что я использую два параметра, которые взяты из локального хранилища.

Все работает отлично, кроме случаев, когда в том же окне браузера происходит смена пользователя. При повторном входе в систему вызов REST выполняется с предыдущими значениями параметров, а не с новыми значениями, хранящимися в $ localStorage (который очищается при выходе из системы и входе в систему).

SHIFT + REFRESH действительно исправили проблему, но мне было интересно, смогу ли я попросить пользователей выполнять SHIT + REFRESH при каждом изменении пользователя, что произойдет.

Обходной путь - попросить их систематически использовать приватную навигацию, но я уверен, что некоторые не будут и будут жаловаться;)

Так есть ли какой-нибудь способ программно пройти через все ресурсы и обновить их при входе в систему?

1 Ответ

0 голосов
/ 17 мая 2018

Используйте функцию:

app.factory('BookResource', function($resource, $localStorage) {
  return $resource('/rest/:roleId/ul/:ulId/book/:id',
    {
      roleId: function () { return $localStorage.currentUser.roleId },
      ulId  : function () { return $localStorage.currentUser.ulId },
      id    : '@id'
    }, {
    update: {
      method: 'PUT' // this method issues a PUT request
    }
  });
});

Из документов:

Если значение параметра является функцией, оно будет вызываться каждый раз, когда необходимо получить значение параметра для запроса.

- Справочник по AngularJS $ resource API - аргументы

...