2014-11-23 73 views

回答

1

是,$provide將做到這一點。查看文檔在https://docs.angularjs.org/api/auto/service/ $提供

所以你可以做這樣的事情(從內foo):

app.factory('foo',functon() { 
    $provide.factory('s',function() { 
     console.log("new service 's'"); 
    }); 
}); 

的問題是,你不能注入$provide直接到服務,所以你需要捕獲它在模塊創建時。

問題是,你爲什麼要這麼做?由於在'foo'運行之前,服務'沒有被聲明,所以你可能會冒着在其他地方調用服務作爲依賴的風險。如果它在正常注射的任何地方,你可能會得到一些奇怪的錯誤。

事實上,我認爲只有它的工作方式是通過使用$injector從其他服務中獲取它。

所以,是的,你可以這樣做,但你真的想嗎?

看這個小提琴:http://jsfiddle.net/ch8vu4ng/1/