以下两个控制器之间的区别

时间:2017-09-28 13:40:20

标签: angularjs angularjs-controller

我是角度JS的新手。我遇到过两种不同类型的控制器声明,我无法理解它在场景背后的影响。

vmyApp.controller('GreetingController', ['$scope', function($scope) {
 $scope.greeting = 'Hola!';
}]);

从上面的片段中我了解到他们已经采用了一个依赖于控制器的功能,其中有两个参数,一个是' $ scope'和其他功能。

其他摘录如下:

vmyApp.controller('GreetingController', function($scope) {
  $scope.greeting = 'Hola!';
});

这里直接作为控制器的第二个参数,没有任何依赖。

请解释一下其影响的差异。

2 个答案:

答案 0 :(得分:3)

它们提供相同的功能,除了顶级控制器是你应该使用的,如果你要缩小你的代码。 AngularJS使用参数名称将值注入控制器函数。在JavaScript缩小过程中,这些参数将重命名为较短的字符串。通过告诉使用字符串数组向函数注入哪些参数,AngularJS仍然可以在重命名参数时注入正确的值。

答案 1 :(得分:1)

运行AngularJS应用程序时没有什么不同。

但是,当您尝试使用任务运行程序(Gulp,Grunt或其他人)编译它时,第二个会破坏您的应用程序,因为$ scope将被替换。

在minif和uglify进程中没有替换字符串,这就是为什么你需要将依赖项注入 string

This guidestyle 解释为什么要做第二个。