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

How to use Angular.js service instance inside module config and keep the same instance

本文关键字:实例 服务 js Angular 模块 配置      更新时间:2023-09-26

我正试图在我的应用程序模块配置中使用一项服务,一项研究表明我需要使用注入器。

这工作得很好,只是当服务加载到控制器内部时,它不再是以前由注入器加载的实例。

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

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

从文档-服务作为单一项

所有Angular服务都是应用程序单体。这意味着每个注入器仅为给定服务的一个实例。自从Angular对全球状态过敏致死,有可能创造多个注入器,每个注入器都有自己的给定服务实例,但是这是很少需要的,除非在测试中至关重要。

这意味着,如果您为单个注入器执行injector.get,它将始终返回类似以下的singleton

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

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

希望能有所帮助。