Как уничтожить внедренный сервис в кеш angularjs?
Мы все знаем, что в AngularJS service
синглтоны. С тех пор, когда вы делаете это $injector.get('foo')
вы получите экземпляр этого сервиса и его конструктор будет вызван + объект будет добавлен в кеш инжектора по причине, потому что это синглтон.
Во всяком случае, есть ли какие-либо методы, которые я могу использовать для удаления службы в этом кэше для повторного создания службы? С помощью factory
решает это но все равно.
1 ответ
Решение
Чтобы сбросить службу, вы можете выставить функцию, которая снова вызывает службу.
обслуживание
app.service('MyService', MyService);
function MyService () {
console.log('init service #' + Date.now());
this.reset = () => {
MyService();
}
}
Тогда вы можете использовать его везде, как
var myService = $injector.get('MyService');
myService.reset();
С классами ES6 вы можете сделать что-то вроде этого:
class MyService {
constructor() {
console.log('init service #' + Date.now());
this.reset = () => {
new MyService();
}
}
}