指令函数的执行顺序是什么? 文档似乎没有解决这个问题。

防爆

  1. template / templateUrl(已评估)
  2. controllerFn
  3. compileFn
  4. linkFn

回答

从以下答案http ://plnkr.co/edit/79iyKSbfxgkzk2Pivuak(plunker显示嵌套和兄弟指令)

  1. 模板被解析
  2. compile() (在编译中对模板所做的更改扩散到链接函数)
  3. controller()
  4. preLink()
  5. postLink()

===============>>#1 票数:9

在相关的说明中,这里我对跨DOM的exec顺序的理解。

这是一个演示(打开浏览器JS控制台)

给定这个使用指令foo DOM:

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

  <div id="2" foo>two</div>

... AngularJS将以深度优先顺序遍历DOM - 两次:

第一遍foo.compile()

1)编译:1

2)编译:1_1

3)编译:2

第二遍:foo.controller()遍历; foo.link()同时回溯

控制器:1

控制器:1_1

链接:1_1

链接:1

控制器:2

链接:2

===============>>#2 票数:4 已采纳

预链接功能:在子元素链接之前执行。 由于编译器链接功能无法找到正确的链接元素,因此进行DOM转换是不安全的。

链接后功能:链接子元素后执行。 在链接后功能中进行DOM转换是安全的。

以上摘录摘自有关指令的官方文件。

因此,要回答您的问题, 后连接/链接功能是您可以在element.children()上安全操作的时间/地点。

  ask by jacob translate from so

未解决问题?本站智能推荐: