Order of execution of directive functions in AngularJS

前端 未结 2 856
盖世英雄少女心
盖世英雄少女心 2020-12-09 10:28

What is the order of execution of directive functions? The documentation doesn\'t seem to address this.

Ex

  1. template / templateUrl (is evaluated)
相关标签:
2条回答
  • 2020-12-09 10:59

    Pre-linking function: Executed before the child elements are linked. Not safe to do DOM transformation since the compiler linking function will fail to locate the correct elements for linking.

    Post-linking function: Executed after the child elements are linked. It is safe to do DOM transformation in the post-linking function.

    Above excerpt is taken from the official docs on directives.

    So, to answer your question, Post-linking/Link function is when/where you can safely operate on element.children().

    0 讨论(0)
  • 2020-12-09 11:12

    on related note, here my understanding of exec order across the DOM.

    Here is a demo (open browser JS console)

    Given this DOM using directive foo:

      <div id="1" foo>
        one
        <div id="1_1" foo>one.one</div>
      </div>
    
      <div id="2" foo>two</div>
    

    ...AngularJS will traverse the DOM - twice - in depth-first order:

    1st pass foo.compile()

    1) compile: 1

    2) compile: 1_1

    3) compile: 2

    2nd pass: foo.controller() traversing down; foo.link() while backtracking

    controller: 1

    controller: 1_1

    link: 1_1

    link: 1

    controller: 2

    link: 2

    0 讨论(0)
提交回复
热议问题