我正在尝试在我的app模块配置中使用一项服务,一些研究指出I need to do it using an injector。
这很好用,除了当服务加载到控制器内部时,它不再是先前由注射器加载的实例。
有谁知道如何获得相同的实例?或者有更好的方法吗?
我创建了一个plnkr来显示行为:http://plnkr.co/edit/BGUa3H
答案 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
但是,如果在此期间将其注入另一个控制器,则会创建一个全新的实例。
希望它有所帮助。