如何销毁 angularjs 缓存中的注入服务?
How to destroy injected service in angularjs cache?
我们都知道在AngularJS中service
是单例。从那时起,当您执行此操作时 $injector.get('foo')
您将获得该服务的一个实例,并且将调用其构造函数+对象将被添加到注入器的缓存中,因为它是单例。
无论如何,有什么方法可以用来删除该缓存中的服务以重新创建服务吗?使用 factory
解决了这个问题,但无论如何。
要重置服务,您可以公开一个再次调用该服务的函数。
服务
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();
}
}
}
我们都知道在AngularJS中service
是单例。从那时起,当您执行此操作时 $injector.get('foo')
您将获得该服务的一个实例,并且将调用其构造函数+对象将被添加到注入器的缓存中,因为它是单例。
无论如何,有什么方法可以用来删除该缓存中的服务以重新创建服务吗?使用 factory
解决了这个问题,但无论如何。
要重置服务,您可以公开一个再次调用该服务的函数。
服务
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();
}
}
}