2017-02-26 175 views
0

我一直在試圖理解角的核心。在編譯角度之後,我無法理解事物的結構。我知道注射器包含/保持跟蹤角服務,工廠,提供者等 - 幾乎所有來自$提供者服務的方法。我知道這個值是由注入器抓取的,當它被引用時,它抓住了當提供方法的實例被調用時獲得的單個值,因爲$ get方法只檢索方法值的單個實例 - 他們之所以會這樣是單身物件(我寫的有點重複,但我想清楚)。我有幾個問題是有全球注射器還是每個模塊都有自己的注射器?注射器是一個物體嗎?這是我怎麼想象沒有它

var angular = { 
 
\t injector: [fn], 
 
\t bootstrap: [fn], 
 
\t $provider: { 
 
\t \t factory:[fn], 
 
\t \t service: [fn], 
 
\t \t constant: [fn] 
 
\t } 
 

 
\t modules: { 
 
\t \t $injector: { 
 
\t \t \t //Names of All Factories/Services/Etc. 
 
\t \t }, 
 
\t \t myApp: { 
 
\t \t \t dependencies:[modules.myServices, modules.controllers, modules.filters] 
 
\t \t }, 
 
\t \t myServices: { 
 
\t \t \t dependencies: [], 
 
\t \t \t controllers: { 
 
\t \t \t \t myTestCtrl: { 
 
\t \t \t \t \t //All controller logic 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }, 
 
\t \t controllers: { 
 
\t \t \t //list of controllers and logic 
 
\t \t }, 
 
\t \t filers: { 
 
\t \t \t //list of filers and logic. 
 
\t \t } 
 

 
\t } 
 
}

這個片段是與我有過濾器,控制器和服務模塊的想法產生。我通常以這種方式構造事物,因爲控制器和服務腳本可能會變得非常冗長(是的,我知道你可以做「var app =」和參考應用程序,請不要浪費答案。myService具有控制器屬性以顯示它是一個能夠擁有一個控制器的模塊,如果你真的不知道,不要爲了答案而猜測,如果你知道100%,請給我一個答案。 。你在談論

+0

$ injector是由'angular.bootstrap'創建的更多信息,請參閱[AngularJS angular.bootstrap API參考](https://docs.angularjs.org/api/ng/function/angular.bootstrap)和[ AngularJS Bootstrap Guide](https://docs.angularjs.org/guide/bootstrap)。 – georgeawg

+0

@georgeawg那不回答我的問題。我已閱讀文檔。我正在尋找清晰度角度的結構 – Scott

回答

1

angular.bootstrap(rootElement, moduleArray, config)方法構造了一個$injector對象和$rootScope對象並將對它們的引用作爲該元素的jqLite數據對象的屬性

這個對象可以被視爲:

console.log(angular.element(rootElement).data()); 

使用「NG」模塊典型的應用程序結構如下:

rootElement.data() 
- $scope (rootScope) 
- $injector 
    - $providerProvider (provider cache) 
    - $controllerProvider (controller cache) 
    - $compileProvider (directive cache) 
    - $filterProvider  (filter cache) 
    - $cacheProvider  (template cache) 
    - $qProvider   (promise library) 
    - $httpProvider  (XHR library) 

的高速緩存是其各自提供者私有變量和由它們各自的功能的方法進行檢索。

+0

這就是我正在談論的喬治!我會將其標記爲正確的答案。 – Scott