javascript - 需要指令 Controller 以及其他所需的 Controller

标签 javascript angularjs angularjs-directive

我有一对指令,一个位于另一个中,并使用 require: '^parentTag' 来要求它。这两个指令还声明了它们自己的 Controller 。在父指令内部,我可以将其 Controller 作为 link: function(scope, el, attrs, ctrl) 的第四个参数来访问,但在子指令中,第四个参数要么是所需的 Controller ,要么是一个数组所需的 Controller 和指令 Controller 不再可访问。

我尝试要求 Controller 使用 controllerAs 'vm' 中使用的名称,并使用 Controller 的字符串名称。两者都没有让 Controller 回到第四个参数。

可以从范围作为 scope.vm 访问 Controller ,但如果可能的话,我想通过第四个参数访问它。

此 Plunkr 显示 ChildController 不在第四个参数中,仅在范围内,但 ParentController 可作为第四个参数访问。

http://plnkr.co/edit/2WmB6Bqgc8MEG9JWz4wt

最佳答案

您可以通过名称要求相同的指令(从未见过有人真正这样做):

function ChildTag() {
  return {
    restrict: 'AE',
    require: ['^parentTag', 'childTag'],
    scope: {},
    template: '<div class="child-tag">Child</div>',
    link: link,
    controller: ChildController,
    controllerAs: 'vm',
    bindToController: true
  }

  function link(scope, element, attrs, ctrls, transclude) {
      // ctrls[1] is ChildController
      console.log('Child vm not found in ctrls', ctrls);
      console.log('Child vm found on scope', scope.vm);
  }
}

关于javascript - 需要指令 Controller 以及其他所需的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334166/

相关文章:

javascript - 在 Typescript 中取消定义变量

javascript - 在 AngularJS 中使用 $location 对象的说明

javascript - Angularjs input[placeholder] 指令与 ng-model 中断

javascript - 在 ReactJS 中渲染数组的内容

javascript - 如何在 DOM 中不附加此图像的情况下获取 img 高度?

javascript - 如何在javascript中的异步函数中回调

javascript - 从隐藏文本开始,单击显示文本

javascript - 在 Struts 1 中使用 AngularJS 进行 Ajax POST

javascript - 如何使用angular js验证 ionic 形式

angularjs-directive - 使用 Angular js 自定义时间选择器