0

关于 $$nextSibling 的一个小问题。我看过很多与这篇类似的文章,说具有隔离作用域的指令和包含作用域的指令之间的关系是通过 $$nextSibling 来实现的。如果该指令只有一个实例,这似乎是正确的。但是,我有一个集合指令,其中包含也是指令的项目,例如

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

这将创建 4 个同级作用域,但顺序如下:第 1 项隔离,第 2 项隔离,第 1 项转入,第 2 项转入。在这种情况下,您需要 $$nextSibling.$$nextSibling,这是非常不令人满意的。

有没有一种更简洁的方式来在隔离范围和嵌入范围之间进行引用?

我正在尝试制作“发出”消息的自包含控件,以便由正在侦听该消息的第一个父指令接收。我发现消息是由父级的嵌入范围而不是隔离范围接收的(我理解并且很好)。问题出现是因为我的父控件“模型”位于隔离范围内,因此在收到消息后采取行动意味着 transclude 范围和隔离范围之间的交互 ​​- 通常通过 $$nextSibling。但是,如上所述,一旦您开始收集,这是不可预测的。

谢谢。

4

1 回答 1

0

答案取决于版本。我在 angular 的 v1.2.0 上运行。在这个版本中,同级作用域没有正确排序,因此 $$nextSibling 不可靠。安装 v1.2.7 后,此问题现已修复,兄弟作用域以正确的顺序列出,transclude 作用域始终位于隔离作用域之后。

从版本更改日志的初始阅读来看,哪个修复解决了这个问题并不是很明显,所以我不确定解决这个问题的最早版本的 Angular 是什么。

于 2014-01-09T10:58:49.927 回答