要回答你問的問題 - 是的,你可以做這樣的事情。
您可以使用injector
得到一個服務實例:
angular.injector(["Your.Service.Module"]).get("FooSvc");
請記住,如果你的服務有其他依賴,那麼你就需要指定所有的人。例如,如果你的服務需要$timeout
:
angular.module("fooModule", []).factory("FooSvc", function($timeout){
...
}
,那麼你就需要像這樣把它注射:
var fooSvcInstance = angular.injector(["fooModule", "ng"]).get("FooSvc");
另外,還要注意該服務的實例會比什麼將被注入不同到您的應用程序。
Plunker
爲什麼你需要做的這一點,你應該重新評估。
編輯
要得到相同的服務實例作爲什麼應用程序讓你需要得到噴油器的同一個實例。要做到這一點,您需要在Angular的應用程序中反對來自DOM元素的injector
。例如,讓我們說,<body>
是在您的應用程序:
// make sure that body has loaded (for example, in window.onload)
var injectorInstance = angular.element(document.body).injector();
var fooSvcInstance = injectorInstance.get("FooSvc");
服務的實例必須是相同的,否則它忽略了一點對我來說。可能嗎? 我應該只使用與我的應用程序相同的模塊嗎? –
對不起,對於延遲 - 是的,這是可能的 - 您需要從Angular的應用程序DOM樹中的元素中檢索注入器。我更新了答案。 –