默认情况下,AngularJS 注入器服务会将控制器函数的参数名称与内置 AngularJS 服务的名称进行匹配(以$
符号开头):
// Old way to define your controller
angular.module('yourModule')
.controller('yourController', function($scope, $http, yourService){
// Your code here
});
但是,由于这只是基于字符串比较,因此当您的代码被丑化和/或缩小时,这可能会导致问题。
因此,建议您使用较新的语法来使用数组表示法创建控制器,如下所示:
// Newer, better way to define your controller
angular.module('yourModule')
.controller('yourController', ['$scope', '$http', 'yourService', function($scope, $http, yourService){
// Your code here
}]);
请注意,控制器函数被替换为一个数组,该数组包含您要注入的服务并以控制器函数结束。
AngularJS 现在将按照您在数组中指定的顺序注入服务,如下所示:
['yourService', 'yourOtherService', function(yourService, yourOtherService){
// You can use yourService and yourOtherService here
}]
名称不必对应,因此您可以使用:
['$http', '$scope', function(h, s){
// You can use h and s here
// h will be the $http service, s will be the $scope
}]
强烈建议使用较新的数组表示法,因为它保证您的代码在缩小或丑化后仍然可以工作。
希望有帮助!