AngularJS控制器:正确的语法是什么?
我通常这样声明一个控制器:AngularJS控制器:正确的语法是什么?,angularjs,controller,Angularjs,Controller,我通常这样声明一个控制器: .controller('myController', function($scope,/*other dependecies go here*/){ // controller definition }; 然而,在一些示例中(包括AngularJS官方文档中的一个示例),我发现如下内容: angular.module('controllerExample', []) .controller('SettingsController2', ['$scope
.controller('myController', function($scope,/*other dependecies go here*/){
// controller definition
};
然而,在一些示例中(包括AngularJS官方文档中的一个示例),我发现如下内容:
angular.module('controllerExample', [])
.controller('SettingsController2', ['$scope', SettingsController2]);
function SettingsController2($scope) {
// controller definition
};
或者简单地说(我想这相当于):
现在,我不明白片段1)与片段2)和片段3)之间的实际差异是什么
此外,我不明白为什么有时相同的依赖项既在函数定义之外,也在函数参数中(如代码片段3)),但外部的没有$是,而内部的是有(很抱歉,我现在找不到示例。但我肯定我遇到过这种情况)
提前感谢数组语法是为了防止代码通过缩微器时出现角度中断。如果你没有缩小你的javascript,除了你可以输入更多/更少的内容之外,其实没有什么大的区别。Angular将这些函数作为字符串读入并处理它们。一些迷你们搞砸了,所以奇怪的语法是当前的解决方案 数组语法是为了防止代码通过缩微器时出现角度中断。如果你没有缩小你的javascript,除了你可以输入更多/更少的内容之外,其实没有什么大的区别。Angular将这些函数作为字符串读入并处理它们。一些迷你们搞砸了,所以奇怪的语法是当前的解决方案 @jwimmer的回答是正确的,但我想再提供一种可能性。您可以使用
$inject
稍微清理一下语法,并保证代码缩微的安全性
someCtrl.$inject = ['$scope', 'someDependency'];
function someCtrl($scope, someDependency) {
...
}
angular.module('someApp')
.controller('someCtrl', someCtrl);
@jwimmer的回答是正确的,但我想再提供一种可能性。您可以使用
$inject
稍微清理一下语法,并保证代码缩微的安全性
someCtrl.$inject = ['$scope', 'someDependency'];
function someCtrl($scope, someDependency) {
...
}
angular.module('someApp')
.controller('someCtrl', someCtrl);
不完全是。我的示例使用
$inject
。不过,在我看来,它实现了同样的功能,只是语法更简洁而已。另请参见,通过这种方式,您保持了可注入项的字符串关联与定义的正确性,因此,如果要添加/删除依赖项,那么您将看到并记住完全更改字符串引用。我的示例使用$inject
。不过,在我看来,它实现了同样的功能,只是语法更简洁而已。另请参见,通过这样做,您将保持可注入项的字符串关联与定义正确,因此,如果要添加/删除依赖项,那么您将看到并记住更改字符串引用$
仅意味着它是内置服务。内部/外部不影响$
$
的使用,只是意味着它是内置服务。内部/外部不影响$