我继承了一些使用全局对象来存储角度服务的代码。这些服务通过角度模块的运行功能附加到全局对象。我的问题是,这是否会导致麻烦?测试造成了什么样的麻烦?像这样传递服务似乎比注入每个控制器中的所有服务容易得多,所以我明白了为什么这样做。没有这样做的其他理由是什么?下面是一些代码来说明我在说什么:使用全局对象避免角度依赖注入
// vars
var globalObject =
{
ng: {},
};
// Setup module
var myModule = angular.module("myModule", []);
myModule.config(doStuff);
myModule.run(setUpGlobals);
// Setup app globals
function setUpGlobals(ngRootScope, ngHttp, ngTimeout)
{
globalObject.rootScope = ngRootScope;
// angular services
globalObject.ng.http = ngHttp;
globalObject.ng.Timeout = ngTimeout;
}
setUpGlobals.$inject = ['$rootScope', '$http', '$timeout'];
谢谢!我不知道服务是按需实例化的。 https://www.bennadel.com/blog/2715-services-and-factories-are-instantiated-on-demand-in-angularjs.htm –
不客气。大多数时候这不会是一个问题,但是这可能会破坏依赖于自然行为的功能,例如延迟加载。 – estus
还有一个问题:服务在不同模块中扮演单身人士的角色吗?他们为同一模块做,但如果模块A和模块B注入服务1,服务1将被共享? –