2

我正在尝试在我的应用程序模块配置中使用一项服务,并且一些研究表明我需要使用 injector 来完成它

这工作得很好,除了当服务在控制器中加载时,它不再是与注入器先前加载的实例相同的实例。

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

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

4

1 回答 1

0

来自文档- 作为单身人士的服务

所有 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

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

希望能帮助到你。

于 2013-08-08T22:07:33.610 回答