AngularJS:确定何时呈现内部指令

时间:2015-02-26 17:34:25

标签: angularjs events render directive

在我的一个观点中,我正在使用myDirective,如下所示:

<div my-directive></div>

它(myDirective)有一个模板:

<div>
    <div my-inner-directive></div>
</div>

我的问题是:我如何从myDirective内知道所有子指令都已呈现?从本质上讲,我何时可以使用element.find()并实际获得结果?不要向我window.setTimeout$timeout提供,因为这些是虚假的解决方案,永远不会正常工作。

3 个答案:

答案 0 :(得分:2)

假设这个标记..

<parent>
    <child1>
        <child2></child2>
    </child1>
</parent>

执行顺序为:

  1. 预告父母
  2. PreLinking of Child1
  3. PreLinking of Child2
  4. Child2的PostLinking
  5. PostLinking of Child1
  6. 父母的PostLinking。
  7. 指令的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')