我可以在AngularJS中要求通用父指令吗?

时间:2015-01-14 15:31:21

标签: angularjs angularjs-directive

子指令是否需要父指令而不确切知道父指令是哪个指令,只是它“实现了一个接口”?

例如:

<parentImplX>
  <child></child>
</parentImplX>

在上面的例子中,我希望注入子节点的控制器为ParentImplXCtrl。但如果我这样做:

<parentImplY>
  <child></child>
</parentImplY>

我希望控制器为ParentImplYCtrl

directives.directive("parentImplX", function () {
  return {
    scope: {},
    restrict: "E", 
    controller: ParentImplXCtrl
  }
});

directives.directive("parentImplY", function () {
  return {
    scope: {},
    restrict: "E", 
    controller: ParentImplYCtrl
  }
});

directives.directive("child", function () {
  return {
    scope: {},
    restrict: "E",
    require: "?^^parentInterface",
    link: function ($scope, $element, attributes, parent /* type ParentInterface */) {
      parent.method();
    }
  }
});

1 个答案:

答案 0 :(得分:2)

我发现角度'要求'不支持此功能。但是,AngularJS存储控制器以及$scopes构造中$element的{​​{1}}。因此编写自己的“接口需求”非常简单。您需要遍历$element.data()并确保有要查找的标识符。就我而言$element.parent().data()。注意:`FocusNode可以有很多实现。这是重点。

isFocusNode