在我的一个观点中,我正在使用myDirective
,如下所示:
<div my-directive></div>
它(myDirective
)有一个模板:
<div>
<div my-inner-directive></div>
</div>
我的问题是:我如何从myDirective
内知道所有子指令都已呈现?从本质上讲,我何时可以使用element.find()
并实际获得结果?不要向我window.setTimeout
和$timeout
提供,因为这些是虚假的解决方案,永远不会正常工作。
答案 0 :(得分:2)
假设这个标记..
<parent>
<child1>
<child2></child2>
</child1>
</parent>
执行顺序为:
指令的PostLinking功能将保证其子元素的执行。
它是绑定事件侦听器或查找子DOM节点的地方。
在示例中指定的标记中。
PostLinking of myDirective will be executed after myInnerDirective is compiled.
有关详情,请参阅:link
答案 1 :(得分:1)
Vinay K为您提供了一个很好的链接,但您还应该看一下StackOverflow上的这篇文章:Angular directives - when and how to use compile, controller, pre-link and post-link
它很长,但可能有一段时间你需要知道的大部分内容:)
答案 2 :(得分:0)
好的,事实证明我做错了一些事情。我也错过了我可以使用$broadcast()
和$on()
。
因此。内部指令:
$scope.$broadcast('myCustomDirectiveEvent')
外/父指令:
$scope.$on('myCustomDirectiveEvent')