我繼承了一些使用全局對象來存儲角度服務的代碼。這些服務通過角度模塊的運行功能附加到全局對象。我的問題是,這是否會導致麻煩?測試造成了什麼樣的麻煩?像這樣傳遞服務似乎比注入每個控制器中的所有服務容易得多,所以我明白了爲什麼這樣做。沒有這樣做的其他理由是什麼?下面是一些代碼來說明我在說什麼:使用全局對象避免角度依賴注入
// 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將被共享? –