创建角度控制器与支架或没有支架之间的差异?

时间:2014-12-18 16:39:54

标签: javascript angularjs

在Angularjs的开发人员指南中创建了一个以下架构创建的控制器:

.controller('MyController', ['$scope', function($scope) {
  $scope.username = 'World';
}]);

但我在其他一些地方看到他们使用另一种方式来创建他们的控制器,如下所示:

.controller('MyController', function($scope) {
  $scope.username = 'World';
});

当我们在控制器定义中使用括号时有什么区别?

1 个答案:

答案 0 :(得分:2)

它允许代码缩小。使用Angular的依赖注入时,注入的变量(作为函数参数)的名称很重要,代码缩小器可以更改它们。如果您提供变量名的字符串版本(按顺序),即使minifier更改了变量名,Angular也能够注入正确的依赖项。

如果你有原始代码:

.controller('MyController', function ($http) {

然后Angular的DI知道要注入$ http服务。但是如果你通过代码缩小器运行它,它可能会将你的代码更改为:

.controller('MyController', function (a) {

现在Angular不知道a是什么,因为它依赖于变量的名称来找到正确的依赖项。如果您提供依赖项名称的字符串版本,那么即使$http已更改为a,Angular也能正确解析它:

.controller('MyController', ['$http', function (a) {