Angularjs 角度JS中的依赖注入
我已经阅读了AngularJS文档,但仍然没有我理解的答案 为什么要用两次?一次作为数组元素,第二次作为函数参数Angularjs 角度JS中的依赖注入,angularjs,Angularjs,我已经阅读了AngularJS文档,但仍然没有我理解的答案 为什么要用两次?一次作为数组元素,第二次作为函数参数 someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) { // ... }]); 如果缩小此代码: someModule.controller('MyController', function($scope, greeter) { // ... }); s
someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
// ...
}]);
如果缩小此代码:
someModule.controller('MyController', function($scope, greeter) {
// ...
});
someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
// ...
}]);
您将以(类似于)结尾:
Angular将无法注入依赖项,因为参数名称已丢失
另一方面,如果缩小此代码:
someModule.controller('MyController', function($scope, greeter) {
// ...
});
someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
// ...
}]);
您将以以下内容结束:
someModule.controller('MyController', ['$scope', 'greeter', function(a, b) {
// ...
}]);
参数名称可用:Angular的DI可运行。缩小将您的代码转换为更轻巧、更快速的下载方式。 在将依赖项注入放入函数并使用它之前,您只需要做一些类似于依赖项注入声明的事情,但在这种情况下,您需要使用缩小 您的函数需要“$scope”和“greeter”。 如果你这样写:
someModule.controller('MyController', function($scope, greeter) { // ...
});
..然后使用缩小,控制器将转向:
someModule.controller('MyController',function(a,b) { // ...
});
…那么您的控制器“MyController”将无法理解“$scope”和“greeter”到底在哪里,它只会看到一个参数“a”和一个参数“b”
因此,最好的方法是使用数组:
someModule.controller('MyController', ['$scope', 'greeter', function($scope, greeter) { // ...
}]);
…然后使用缩小:
someModule.controller('MyController', ['$scope', 'greeter', function(a, b) { // ...
}]);
正如您所看到的,数组的第一个和第二个元素没有被转换,javascript将知道“a”和“b”是数组中要放入函数的元素
请注意,如果您编写以下内容:
someModule.controller('MyController', function(a, b) {
// ...
});
someModule.controller('MyController', ['$scope', '$log', function($log, $scope) {
console.log($scope);
}]);
您将拥有$log的控制台日志!
这是因为职位和唯一的职位很重要,您可以命名:
someModule.controller('MyController', ['$scope', '$log', function(Donald, Duck) {
console.log(Duck);
}]);
它会将$log元素的控制台日志发送给您。minification/uglify可能会破坏代码,否则(但您可以以它不存在的方式进行配置):)我认为这不是真的。如果我使用.controller('createUpdate',函数($scope、$http、$routeParams、$route、$location、$window){……一切都正常。