AngularJS 指令参数"ctrls"



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

link: function (scope, element, attrs, ctrls) {
  var ngModelCtrl = ctrls[0],
      invalidInputController = ctrls[1];
  // ...
}

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

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

require: ['ngModel', '?numberFormatterPreventInvalidInput'],

我怀疑他们来自那里。

通常,

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

['^something', '^another']

link内,它们可以通过ctrl[0]ctrl[1]访问。

同样来自文档:

控制器

和链接之间的基本区别在于控制器可以公开 API,并且链接 函数可以使用 require 与控制器交互

最佳实践:当您想要向其他人公开 API 时使用控制器 指令。否则使用链接。

如果在你的指令中写了

  require:["ngModel","^directiveTwo"] 

比 ngModel ,指令二是指令的名称,指令二必须是父指令

  link: function (scope, element, attrs, ctrls) {
   var ngModelCtrl = ctrls[0],
     controllerOfDirectiveTwo = ctrls[1];
   // ...
}

ctrls 最后一个参数是 require 定义的指令的控制器数组,因此对于 ngModel 来说,这个 :https://docs.angularjs.org/api/ng/type/ngModel.NgModelController 对于控制器定义的指令:在您的指令中

最新更新