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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…