2014-02-07 87 views
1

this page,角文檔描述AUTO模塊:

Implicit module which gets automatically added to each $injector. 

然而,$injector位於此AUTO模塊內。

AUTO 
    $injector 
     AUTO 
      $injector ... 

顯然我錯過了一些東西。

AUTO模塊如何與angular.module()相關聯,$injector適合在哪裏?

angular.module() 
    AUTO 
     $injector 

這將是有意義的,但隨後的文檔即意味着AUTO添加到$injector沒有意義。我想知道如果我誤解了一些東西。所以我的問題是,我誤解了什麼?

+1

我在這裏失蹤的問題。 – Stewie

回答

4

AUTO基本上用$ provide和$ injector來連接模塊。 $注入器引用它自己,所以$注入器=== $ injector.get('$注入器')。它通過在Angular上下文外部構建模塊並手動推送$ injector和$ provide來避免雞/蛋情況。從那時起,模塊可以使用$ provide,$ injector等。你永遠不會引用明確稱爲「AUTO」的模塊,但是通過angular.module創建的任何模塊都將具有$ injector和$ provide。其他服務來自'ng'模塊,但其自動部分必須建立,因此需要使用DI容器。

0

有兩個噴射器,一個內部和外部之一:

的instanceInjector存儲在系統中實例化的服務的列表。它用一個空對象初始化。 providerInjector維護未經實例化的服務列表。

angular.injector方法可以創建一個實例:

angular.injector().get("$injector") 

內置模塊ng還可以:

angular.module("ng")._configBlocks[0][0] 

參考