Angularjs 为什么指令内部链接函数的语法是错误的?

Angularjs 为什么指令内部链接函数的语法是错误的?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我已经浪费了很多时间来找出我的指令链接功能不起作用的原因: 在指令代码中,您可以为控制器编写以下行: controller: ['$scope', '$element', function($scope, $element) { }], 但是你不能为link写同样的内容,比如: link: ['scope', 'element', 'attrs', function(scope, element, attrs) {}] 只有这样才能起作用: link: func

我已经浪费了很多时间来找出我的指令链接功能不起作用的原因:

在指令代码中,您可以为控制器编写以下行:

 controller: ['$scope', '$element', function($scope, $element) {
            }],
但是你不能为link写同样的内容,比如:

 link: ['scope', 'element', 'attrs', function(scope, element, attrs) {}]
只有这样才能起作用:

 link: function(scope, element, attrs) {}

为什么会这样?

因为控制器是一个可注入函数,而link不是。这是一个传统的函数,参数的顺序很重要,而不是它们的名称。它接受,按顺序

  • 指令的范围
  • 指令的要素
  • 此元素的属性
  • 控制器
  • 转置函数
这是有文档记录的:$compile#-link-