Angular js指令中的发布链接与预链接

Posted

技术标签:

【中文标题】Angular js指令中的发布链接与预链接【英文标题】:post link vs pre link in Angular js directives 【发布时间】:2013-08-20 06:29:29 【问题描述】:

如此处所述:

http://docs.angularjs.org/guide/directive

Angular js 指令采用两种不同类型的链接函数:

预链接功能 在链接子元素之前执行。进行 DOM 转换并不安全,因为编译器链接函数将无法找到正确的链接元素。

后链接功能 在子元素链接后执行。在post-linking函数中做DOM转换是安全的。

此外,如果给定匿名函数,link 的默认键似乎将绑定到 postLink

我何时以及为什么要使用预链接功能?

【问题讨论】:

请看***.com/questions/15297797/… 或许更全面的指令函数概述:Angular directives - when to use compile, controller, pre-link and post-link. odetocode.com/blogs/scott/archive/2014/05/28/… 【参考方案1】:

您想要使用预链接的唯一情况是您需要在编译任何子元素之前对范围执行一些准备工作。

我的团队在编写网格指令时使用它来定义范围上的网格对象并设置它的一些属性,在编译任何子行和单元格对象之前需要这些属性。

希望有帮助!

【讨论】:

我不确定这是否准确。编译阶段在预链接/后链接阶段运行时结束。 如果您需要在任何孩子进行任何其他设置之前进行一些设置,则更准确的答案可能是您使用 pre。帖子链接以相反的“顺序”运行。 jvandemo.com/… 这不应该是公认的答案,@pixelbits 正确地指出子元素在任何父元素的预链接之前已经编译。 请参考to this answer。

以上是关于Angular js指令中的发布链接与预链接的主要内容,如果未能解决你的问题,请参考以下文章

Angular JS:当我们已经有了具有作用域的指令控制器时,还需要指令的链接函数吗?

Angular JS - 单击按钮从指令加载模板 html

Angular中访问DOM元素的“链接”函数的等价物是啥

angular之link和compile的区别

Angular 指令 - 何时以及如何使用编译、控制器、预链接和后链接 [关闭]

为啥在 Angular 指令的链接函数中“this”为空?