2016-01-26 53 views
4

請考慮以下示例。他們的工作方式不同嗎角度定義參數兩次

.controller('MyController',function($scope) { 
    $scope.username = 'World'; 

    $scope.sayHello = function() { 
    $scope.greeting = 'Hello ' + $scope.username + '!'; 
    }; 
}); 

Vs的

.controller('MyController', ['$scope', function($scope) { 
    $scope.username = 'World'; 

    $scope.sayHello = function() { 
    $scope.greeting = 'Hello ' + $scope.username + '!'; 
    }; 
}]); 

他們輸出我一樣的,我只是不明白爲什麼我們把它放在那裏。有時我必須把它作爲工作對象。爲什麼要定義兩次?

回答

6

這是一個有趣的問題。答案就是在當地環境中按預期工作。但是..

當您對生產版本的JavaScript文件進行縮小/混淆時,數組表示法很有用。在這種情況下,參數$ scope可能會被重命名爲$ s,但是因爲我們將字符串'$ scope'定義爲第一個參數,所以Angular知道對該控制器的第一個依賴項是$ scope對象。

因此,除非您正在寫內容的東西,否則請使用推薦的數組符號! :)

請參閱:http://viralpatel.net/blogs/angularjs-controller-tutorial/

+0

另外,使用數組符號可提高可測試性。 – DonJuwe

+0

謝謝! :) – Alice