是否有更清晰的名称来描述AngularJS中的数组语法

时间:2015-06-18 14:20:24

标签: angularjs

我可以在AngularJS doc中读到,当使用在函数中使用之前在字符串中指定依赖关系的语法时。 (例如.controller('InvoiceController', ['currencyConverter', function(currencyConverter) { [...]),这称为数组语法

  

Angular使用这个数组语法来定义依赖关系,这样DI在缩小代码后也可以工作,这很可能会将控制器构造函数的参数名称重命名为更短的代码。

我正在寻找一个更清晰,或至少更专业的术语来描述这种方法,因为我认为这听起来很奇怪,并且在与同事一起制作时没有任何意义。

4 个答案:

答案 0 :(得分:2)

Angular文档为注入注释指定了三个术语:

  • 推断
  • $ inject Annotation
  • 内联(这是您的问题引用的数组语法)

也许这就是你要找的那个词。

https://docs.angularjs.org/api/auto/service/$injector

答案 1 :(得分:2)

这种方法被称为“内联数组注释”,它是一种“依赖注释”。

您基本上是在对控制器进行注释,以便进样器知道要注入函数的服务。

使用服务名称信息注释代码有三种方法:

  • 使用内联数组注释(这是首选方法)。
  • 使用$ inject属性注释。
  • 隐含地来自函数参数名称(不推荐)。

取自here

内联数组注释

  

你的例子中有什么。您可以在中指定依赖项   在线阵列。

myModule.controller('MyController', ['$scope', 'someService', function($scope, someService ... ]

$ inject属性注释

  

在这里,您可以使用$inject注入依赖项。

var MyController = function($scope, someService) ...

MyController.$inject = ['$scope', 'someService'];
myApp.controller('MyController', MyController);

隐式注释

  

在这里,您不必指定数组中的依赖项。这导致   如果你缩小你的代码就会出现问题。

someModule.controller('MyController', function($scope, someService)

答案 2 :(得分:0)

基本上发生的事情是使用数组语法而不仅仅是函数中的参数,确保完全按照数组语法中的定义注入依赖项。如果您不使用数组语法,则代码缩小可能会将控制器的依赖项重命名为a,b,c,而您的应用程序将无法知道您要使用a,b,c注入的内容。当您使用数组语法时,您的应用程序知道a代表数组中的第一个条目,b代表第二个条目,c代表第三个等等。换句话说,函数中的依赖关系无关紧要(只要数组中的名称与要注入的依赖项的名称匹配,就会调用bit。

答案 3 :(得分:0)

控制器的这个参数是数组格式,因此是数组语法术语。我认为你实际需要沟通的是控制器将数组格式的依赖列表作为参数