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

How to destroy injected service in angularjs cache?

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

无论如何,有什么方法可以用来删除该缓存中的服务以重新创建服务吗?使用 factory 解决了这个问题,但无论如何。

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

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