建立控制器 Minification 安全

有幾種不同的方法可以保護你的控制器建立免受縮小。

第一個稱為內聯陣列註釋。它看起來如下:

var app = angular.module('app');
app.controller('sampleController', ['$scope', '$http', function(a, b){
    //logic here
}]);

控制器方法的第二個引數可以接受依賴關係陣列。正如你所看到的,我已經定義了 $scope$http,它們應該對應於控制器功能的引數,其中 a 將是 $scope,而 b 將是 $http。請注意,陣列中的最後一項應該是你的控制器功能。

第二個選項是使用 $inject 屬性。它看起來如下:

var app = angular.module('app');
app.controller('sampleController', sampleController);
sampleController.$inject = ['$scope', '$http'];
function sampleController(a, b) {
    //logic here
}

這與內聯陣列註釋的作用相同,但為那些喜歡一個選項而不是另一個選項的人提供了不同的樣式。

注入依賴關係的順序很重要

使用陣列表單注入依賴項時,請確保依賴項列表與傳遞給控制器​​函式的相應引數列表相匹配。

請注意,在以下示例中,$scope$http 是相反的。這將導致程式碼中出現問題。

// Intentional Bug: injected dependencies are reversed which will cause a problem
app.controller('sampleController', ['$scope', '$http',function($http, $scope) {
    $http.get('sample.json');
}]);