AngularJS:隔离范围与同一指令集合的transclude范围之间的关系

问题描述:

关于$$ nextSibling的小问题。我见过很多类似于this的文章,其中指出隔离范围指令与transclude范围之间的关系是通过$$ nextSibling。如果只有一个指令实例,这似乎是正确的。不过,我有一个收集指令,其中包含也是指令的项目,例如AngularJS:隔离范围与同一指令集合的transclude范围之间的关系

<items><item id="1"/><item id="2"/></items>

,这将创建4米兄弟范围但其顺序是:项目1分离物,项目2分离,第1项transclude,第2项transclude。在这种情况下,您需要$$ nextSibling。$$ nextSibling,这非常令人不满意。

是否有更简洁的方法来引用隔离范围和transclude作用域?

我正在尝试使自包含的控件'发出'消息,由正在侦听该消息的第一条父指令接收。我发现这些消息是由父代的transclude范围接收的,而不是隔离范围(我知道并且很好)。问题出现了,因为我的父级控件'模型'位于隔离范围内,因此在收到消息后采取行动意味着跨行范围与隔离范围之间的交互 ​​- 通常通过$$ nextSibling。但是,如上所述,一旦开始收藏,这是不可预测的。

谢谢。

答案与版本相关。我在angular上运行v1.2.0。在这个版本中,同级作用域没有正确排序,因此$$ nextSibling不可靠。 安装v1.2.7后,现在已经修复,并且同级作用域以正确顺序列出,transclude作用域始终位于隔离范围之后。

从版本更改日志的初始读取中,不明确哪个修复程序可以解决此问题,因此我不确定最早版本的Angular解决此问题的方法。