AngularJS:如何使使用transclusion的父指令在子指令之前编译

AngularJS: How to make parent directive using transclusion be compiled before the child directive?

本文关键字:指令 编译 何使使 transclusion AngularJS      更新时间:2023-09-26

我有以下结构:

<dad-dir>
  <kid-dir></bar-dir>
  <kid-dir></bar-dir>
</dad-dir>

这里,dadDir是父指令,kidDir是子指令。在dadDir中,transclude被设置为true。输出看起来像这样:

<div class='dad-dir'>
  <span class='kid-dir'>Kid directive output</span>
  <span class='kid-dir'>Kid directive output</span>
</div>

我遇到的问题是,kidDirdadDir之前被编译/链接。这是一个问题,因为我希望dadDir设置某些属性,而我希望kidDir继承这些属性。我在dadDirkidDirlink函数中都有一个console.log行,而kidDir中的函数记录在dadDir之前。

我已经尝试过更改优先级,将dadDir的优先级设置为10,kidDir的优先级设置成1,但没有效果。

有什么想法吗?

我相信这是我之前使用的angularjs 1.0.5版本中的一个错误。我刚刚升级到1.2,神奇的是,kidDirrequire: '^dadDir'可以工作。

您是否尝试在母元素中进行transclude?

在fooDir指令中:

transclude: true
replace: true
template: "<div ng-transclude></div>"

然后在孩子身上barDir指令

require: '^fooDir'