子指令是否需要父指令而不确切知道父指令是哪个指令,只是它“实现了一个接口”?
例如:
<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();
}
}
});
答案 0 :(得分:2)
我发现角度'要求'不支持此功能。但是,AngularJS存储控制器以及$scopes
构造中$element
的{{1}}。因此编写自己的“接口需求”非常简单。您需要遍历$element.data()
并确保有要查找的标识符。就我而言$element.parent().data()
。注意:`FocusNode可以有很多实现。这是重点。
isFocusNode