如何在模块配置中使用Angular.js服务实例并保持相同的实例

时间:2013-08-08 21:11:43

标签: javascript angularjs angularjs-service

我正在尝试在我的app模块配置中使用一项服务,一些研究指出I need to do it using an injector

这很好用,除了当服务加载到控制器内部时,它不再是先前由注射器加载的实例。

有谁知道如何获得相同的实例?或者有更好的方法吗?

我创建了一个plnkr来显示行为:http://plnkr.co/edit/BGUa3H

1 个答案:

答案 0 :(得分:0)

来自doc - 服务作为单身人士

  

所有Angular服务都是应用程序单例。这意味着那里   只是给定服务注入器的一个实例。以来   Angular对全球状态是致命的过敏,有可能创造   多个注入器,每个注入器都有自己的给定服务实例,但是   这是很少需要的,除了在这个属性的测试中   非常重要。

这意味着如果你为一个注入器执行injector.get,它将始终返回像这样的单例

var injector = angular.injector(['app.services']);
var singletonService1 = injector.get('singletonService');
var singletonService2 = injector.get('singletonService');
console.log(singletonService1 === singletonService2) // prints true

但是,如果在此期间将其注入另一个控制器,则会创建一个全新的实例。

希望它有所帮助。