在角度模块中,为什么主体是最后一个数组元素

In angular modules why the body is the last array element?

本文关键字:主体 最后一个 数组元素 为什么 模块      更新时间:2023-09-26

这更多的是一个架构问题。

定义角度模块的最常见形式之一是:

angular.module('app', [])
  .controller('Ctrl', ['$scope', function Ctrl($scope) {
    //body...
}]);

但我觉得语法不是很直观。在像AMD:这样的阵列中拥有依赖项列表怎么样

angular.module('app', [])
  .controller('Ctrl', ['$scope'],
          function Ctrl($scope) {
            //body...
          });

这样,整个数组将只包含字符串元素,每个元素都指向一个模块。数组与函数参数一一匹配。(有点像arguments)。

所以我的问题是Angular的设计师为什么选择这个惯例?

它在某种意义上做到了这一点。您可以使用$inject来完成此操作。

function SomeCtrl ($scope) {
  // do something with $scope
}
SomeCtrl.$inject = ['$scope'];
angular
  .module('app', [])
  .controller('SomeCtrl', SomeCtrl);

我不是这方面的非专家,但我确实找到了一篇关于这个过程如何运作的好帖子,它可能有助于回答你的问题:http://toddmotto.com/angular-js-dependency-injection-annotation-process/