检测父Angular指令的所有子指令何时链接

时间:2015-09-15 14:16:23

标签: angularjs

我正在寻找一种干净的方法来检测何时链接了给定类型的所有子指令。我希望父指令是通用的,因此无论子元素是否使用ng-repeat,它都应该有效。请注意,ng-repeat会更改链接顺序。

示例1:在链接了所有子元素之后,将执行父后链接功能,因此我可以在链接时跟踪每个子项,然后在父后链接期间处理它们。

<parent>
    <child></child>
    <child></child>
    <child></child>
</parent>

示例2:ng-repeat更改链接顺序。在这种情况下,在尝试链接子项之前,父级后链接已经完成。因此,我无法使用父级后链接功能来确定所有孩子何时被链接,但我可以为每个孩子添加$ scope。$ last的支票。

<parent>
    <child ng-repeat="c in children"></child>
</parent>

我遇到的问题是提出一个很好的干净解决方案来处理这两种情况,因为父母必须检查孩子是否使用ng-repeat或不。目前我正在做的是将一个虚拟孩子插入到模板中以使用ng-repeat来保持被抄送的孩子。

    <child ng-transclude ng-repeat="dummy in [0]"></child>

这迫使示例1像示例2一样,并始终生成$ scope。$ last。它似乎有效,但有一定的气味。

1 个答案:

答案 0 :(得分:0)

可能是这样的:

<parent>
    <child></child>
    <child></child>
    <child last="true"></child>
</parent>

然后在子指令中检查$lastattrs.last并让子指令触发事件或与父母沟通的任何事情