我们都知道AngularJS service
是单身人士。从那时起,当你执行此$injector.get('foo')
时,你将得到一个这个服务的实例,并且它的构造函数将被调用+对象将被添加到注入器的缓存中,因为它是单例。
无论如何,是否有任何方法可以用于删除该缓存中的服务以重新创建服务?无论如何,使用factory
解决了这个问题。
答案 0 :(得分:0)
要重置服务,您可以公开再次调用服务的函数。
<强>服务强>
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();
}
}
}