2015-04-02 117 views
0

我已經看到了一些情況下,您可以立即在供應商使用的角度服務,例如:何時指定angularjs依賴模塊?

.module('yea.buddy', [ 
    'ui-translate' 
]) 
.config(function($translateProvider) { ... }) 

.module('yea.buddy.two', [ 
    'some-module' 
]) 
.config(['some-module-service', function(someModuleService) { ... }]) 

什麼是兩者之間的區別?何時需要資源,並且不需要方括號記號?

編輯:我有一個例子,有一些困惑,我問,因爲我不想打破縮小。

+0

可能的重複[角度方括號使用的目的](http://stackoverflow.com/questions/18032068/purpose-of-square-bracket-use-in-angular) – 2015-04-02 03:59:45

回答

0
  1. 在模塊例如angular.module('app',[]);方括號是用於依賴模塊。這是必須的,如果你有任何依賴性,你必須包括在這裏,不管你是否要縮小。

  2. 爲了創建任何控制器,服務,指令和過濾器,如果您想縮小,您必須提供各自的依賴關係。如果你不想縮小它是可選的

  3. 在angular.module('app',[])。config()的情況下,它是相同的項目2,這意味着它是可選的,如果你不是打算來縮小

獎勵:

爲什麼角的需要?

讓我們嘗試瞭解角度如何檢測函數參數的依賴性。參數的排序是無用的。如果您可以更改任何參數的排序,它將毫無問題地工作。實際上,角度維護一個全局數組$注入器,它存儲在創建服務或過濾器或任何其他組件時,數組索引(對象屬性)是您提供的名稱的每個實例。例如,你創建的服務

angular.module('app',[]).service('good', function(){ 

    }); 

所以角有

$injector['good'] = service/filter etc output 

好了,我們回到正題。所以,當你可以嘗試在控制器中注入新創建的服務作爲參數時,angular首先找出所有提供的參數,並從$ injector中恢復它的實例[EACH_SINGLE_ARUGMENT],例如對於你的情況$ injector ['good']

但是,當你縮小你的代碼時,大部分時間都會縮小函數參數。例如,'好'將是'a'。因此角度無法檢測。這就是爲什麼角度使用這個技巧,所以當你在方形的大括號中提供你的依賴時,例如

app.controller(['good', function(good) { 
}]); 

由於minify腳本不會更改數組值,所以angular會從此數組中獲取名稱。因爲縮小腳本通常會做到以下幾點:

app.controller(['good', function(a) { 
    }]); 

希望它能幫助你一點。