У меня есть несколько сервисов, которые используют веб-сервис и кэшируют множество результатов. Кэширование я подразумеваю хранение в переменной в службе. Когда пользователь выходит из системы, данные должны быть очищены. Услуги выглядят следующим образом (упрощенная версия):
class DataService {
private data;
constructor($http)
{
$http.get(url).then((response) =>
{
this.data = response.data;
});
}
}
Что такое typescript, но разрешается примерно так:
var DataService = (function () {
function DataService($http) {
var _this = this;
$http.get(url).then(function (response) {
_this.data = response.data;
});
}
return DataService;
})();
Я могу очистить данные, используя ответ в Этот вопрос Что делает что-то вроде этого:
$rootScope.on('logout',function(){
this.data = [];
});
Однако, это много кода, когда у нас есть несколько служб и контроллеров. И все мы знаем, что этот новый парень добавит некоторые новые данные в сервис, и он забывает добавить его в последовательность выхода. Это просто плохая практика.
Аналогично, данные хранятся в $scope в разных частях приложения, и это также должно быть очищено. Область действия довольно проста, поскольку конструкторы для контроллеров загружаются при каждом посещении страниц и затем переопределяют данные.
Одним из предлагаемых решений является обновление, однако это дает ужасные пользовательские впечатления.
Одним из решений может быть сделать, что angular считает, что службы никогда не были созданы или не перезагрузили angular полностью.
Каков наилучший способ сделать это? Плохо хранить данные в переменных по сервисам?