我正在尝试在我的应用程序模块配置中使用一项服务,并且一些研究表明我需要使用 injector 来完成它。
这工作得很好,除了当服务在控制器中加载时,它不再是与注入器先前加载的实例相同的实例。
有谁知道如何获得相同的实例?或者有更好的方法吗?
我创建了一个 plnkr 来显示行为:http ://plnkr.co/edit/BGUa3H
我正在尝试在我的应用程序模块配置中使用一项服务,并且一些研究表明我需要使用 injector 来完成它。
这工作得很好,除了当服务在控制器中加载时,它不再是与注入器先前加载的实例相同的实例。
有谁知道如何获得相同的实例?或者有更好的方法吗?
我创建了一个 plnkr 来显示行为:http ://plnkr.co/edit/BGUa3H
来自文档- 作为单身人士的服务
所有 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
但是,如果同时将其注入另一个控制器,则会创建一个全新的实例。
希望能帮助到你。