如何在angularjs缓存中销毁注入的服务?

时间:2018-01-09 16:55:47

标签: angularjs caching angularjs-injector

我们都知道AngularJS service是单身人士。从那时起,当你执行此$injector.get('foo')时,你将得到一个这个服务的实例,并且它的构造函数将被调用+对象将被添加到注入器的缓存中,因为它是单例。

无论如何,是否有任何方法可以用于删除该缓存中的服务以重新创建服务?无论如何,使用factory解决了这个问题。

1 个答案:

答案 0 :(得分:0)

要重置服务,您可以公开再次调用服务的函数。

PLUNKER

<强>服务

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();
    }
  }
}