Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS控制器:正确的语法是什么?_Angularjs_Controller - Fatal编程技术网

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
。不过,在我看来,它实现了同样的功能,只是语法更简洁而已。另请参见,通过这样做,您将保持可注入项的字符串关联与定义正确,因此,如果要添加/删除依赖项,那么您将看到并记住更改字符串引用
$
仅意味着它是内置服务。内部/外部不影响
$
$
的使用,只是意味着它是内置服务。内部/外部不影响
$