我是角度JS的新手。我遇到过两种不同类型的控制器声明,我无法理解它在场景背后的影响。
vmyApp.controller('GreetingController', ['$scope', function($scope) {
$scope.greeting = 'Hola!';
}]);
从上面的片段中我了解到他们已经采用了一个依赖于控制器的功能,其中有两个参数,一个是' $ scope'和其他功能。
其他摘录如下:
vmyApp.controller('GreetingController', function($scope) {
$scope.greeting = 'Hola!';
});
这里直接作为控制器的第二个参数,没有任何依赖。
请解释一下其影响的差异。
答案 0 :(得分:3)
它们提供相同的功能,除了顶级控制器是你应该使用的,如果你要缩小你的代码。 AngularJS使用参数名称将值注入控制器函数。在JavaScript缩小过程中,这些参数将重命名为较短的字符串。通过告诉使用字符串数组向函数注入哪些参数,AngularJS仍然可以在重命名参数时注入正确的值。
答案 1 :(得分:1)
运行AngularJS应用程序时没有什么不同。
但是,当您尝试使用任务运行程序(Gulp,Grunt或其他人)编译它时,第二个会破坏您的应用程序,因为$ scope将被替换。
在minif和uglify进程中没有替换字符串,这就是为什么你需要将依赖项注入 string 。
This guidestyle 解释为什么要做第二个。