为什么在创建组件时在AngularJs中使用方括号表示法

时间:2015-10-17 15:14:17

标签: angularjs dependency-injection

当我们创建控制器,服务等组件时,AngularJs中方括号的用途是什么?我在示例中看到了[' ngRoute',' ngFileUpload']。有什么用?

4 个答案:

答案 0 :(得分:4)

它定义了角度依赖注入的方式,因此您可以在不破坏它的情况下解析源代码。

例如,控制器可以定义两个依赖关系:

angular.module('App').controller('SomeController', ['ngRoute', 'ngFileUpload', function (route, fileUpload) {
    console.log('this is ngRoute', route);
    console.log('this is fileUpload', fileUpload);
}]);

angular将实例化控制器,其依赖关系与数组中的顺序相同。所以你给这些论点的名字并不重要。现在想象一下,你想要将代码弄清楚,使它像这样:

angular.module('App').controller('SomeController', ['ngRoute', 'ngFileUpload', function (a, b) {
    console.log('this is ngRoute', a);
    console.log('this is fileUpload', b);
}]);

您仍将按预期获得依赖项。 但是,如果您使用此表示法:

angular.module('App').controller('SomeController', function (ngRoute, ngFileUpload) {});

您无法重新编写重命名函数参数的代码。

答案 1 :(得分:0)

用于注释。如果您使用任何缩小或混淆软件,您的注射将被重命名。数组中的注释将允许角度映射到正确的方法。

$injector上的角度文档中提供了更多信息:https://docs.angularjs.org/api/auto/service/ $ injector

答案 2 :(得分:-1)

它没有特殊的“AngularJS”意义。它表示一个Javascript数组,通过执行['ngRoute', 'ngFileUpload'],您传递的元素数组(或本例中的字符串)将被传递给您正在调用的函数。

angular.module('myapp', ['ngRoute', 'ngFileUpload']);

现在由module函数来决定它如何解释你传递的数组。但要回答你的问题,它只是一个数组。

答案 3 :(得分:-1)

模块定义中的[]参数可用于定义依赖模块。

例如,

angular.module('myApp', [])中的空数组。这个数组是myApp所依赖的模块列表。