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

时间:2014-09-25 07:48:05

标签: javascript angularjs

这更像是一个架构问题。

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

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

但我发现语法非常直观。如何在AMD数组中包含依赖项列表:

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

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

所以我的问题是为什么Angular设计师会参加这个会议?

1 个答案:

答案 0 :(得分:3)

从某种意义上说,这种做法就是这样。您可以使用$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/