AngularJS指令参数"ctrls"

Ben*_*Ben 2 javascript angularjs

我在Angular的指令中看到了一个链接函数,如下所示:

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

  var ngModelCtrl = ctrls[0],
      invalidInputController = ctrls[1];

  // ...
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解ctrl参数中的控制器来自哪里?

编辑:该指令有一个angular require属性,按名称指定另外两个指令,如下所示:

require: ['ngModel', '?numberFormatterPreventInvalidInput'],
Run Code Online (Sandbox Code Playgroud)

我怀疑他们是从那里来的.

Mar*_*.io 6

通常它们来自require指令的一部分,该指令是字符串或控制器数组.

['^something', '^another']
Run Code Online (Sandbox Code Playgroud)

link他们内部访问ctrl[0]ctrl[1].

还来自文档:

控制器和链接之间的基本区别是控制器可以公开API,链接功能可以使用require与控制器交互.

最佳实践:当您希望将API公开给其他指令时,请使用控制器.否则使用链接.