我通常以这种方式声明一个控制器:
.controller('myController', function($scope,/*other dependecies go here*/){
// controller definition
};
但是在某些例子中(包括AngularJS官方文档中的一个),我发现了类似的内容:
angular.module('controllerExample', [])
.controller('SettingsController2', ['$scope', SettingsController2]);
function SettingsController2($scope) {
// controller definition
};
或简单(相当于我猜):
angular.module('controllerExample', [])
.controller('SettingsController2', ['$scope', function(){
// controller definition
}
]);
现在,我不明白代码段1)和代码段2)之间的实际差异和3)
此外,我不明白为什么有时相同的依赖关系在函数定义和函数参数之外(如代码片段3))但在之外是没有$ 内部 (抱歉,我现在找不到示例。但我确定我遇到过这种情况。)
提前谢谢
答案 0 :(得分:4)
数组语法是在代码通过minifier时防止角度破坏。如果你没有缩小你的javascript,除了你输入更多/更少之外,确实没有太大的区别。 Angular将这些函数作为字符串读取并处理它们。一些缩小器将其拧紧,因此奇怪的语法是当前的解决方案。
答案 1 :(得分:2)
@ jwimmer的答案是正确的,但我想提供一个更多的可能性。您可以使用$inject
清除语法并保持代码缩小安全。
someCtrl.$inject = ['$scope', 'someDependency'];
function someCtrl($scope, someDependency) {
...
}
angular.module('someApp')
.controller('someCtrl', someCtrl);