2017-09-28 38 views
2

我是角JS的新手。我遇到了兩種不同類型的控制器聲明,我無法理解它在場景背後的影響。以下兩個控制器之間的區別

vmyApp.controller('GreetingController', ['$scope', function($scope) { 
$scope.greeting = 'Hola!'; 
}]); 

從上面的代碼片斷我明白他們採取了一個函數依賴控制器與2個參數之一'$範圍'和其他與功能。

其他片斷如下:

vmyApp.controller('GreetingController', function($scope) { 
    $scope.greeting = 'Hola!'; 
}); 

這裏直接用作第二個參數到控制器,沒有任何依賴性。

請解釋一下它的影響差異。

+0

如果解釋對你有幫助,請將我的答案標記爲已接受的答案:) –

回答

3

他們提供相同的功能,除了頂層控制器是你應該使用的,如果你要縮小你的代碼。 AngularJS使用參數名稱將值注入到控制器函數中。在JavaScript縮小過程中,這些參數被重命名爲較短的字符串。通過告訴用字符串數組注入哪些參數,AngularJS仍然可以在參數重命名時注入正確的值。

1

運行AngularJS應用程序時沒有什麼不同。

但是,當您嘗試使用任務運行器(Gulp,Grunt或其他)編譯它時,第二個會打破您的應用程序,因爲$ scope將被替換。

字符串不會在minif和uglify過程中被替換,這就是爲什麼您需要注入依賴關係字符串

This guidestyle解釋爲什麼你應該做第二個。