创建控制器 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');
}]);