首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结束语在指令设置的编译/链接过程中何时发生?

结束语在指令设置的编译/链接过程中何时发生?
EN

Stack Overflow用户
提问于 2015-03-27 15:47:22
回答 1查看 486关注 0票数 0

我正在编写一个自定义指令,它使用transclusion。我需要修改已排除DOM内容后,转换已采取place....would,我想这样做,在后链接或控制器或.联系.我不知道这些事情发生的顺序在哪里,所以我不知道如何确保在转移发生之后执行我的JS。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 18:07:07

转换发生在编译阶段。角的$compile服务遍历DOM,如果指令已经启用,则角提取元素的内容(如果是transclude: true,或者元素本身--用于transclude: 'element'),编译它们,并使已编译的内容可以绑定到转换作用域中。

因此,执行的顺序是:

  1. 角转换内容并编译它:compile函数被屏蔽的内容指令的执行
  2. 指令的compile函数执行返回prepost-link函数。
  3. 执行指令controller 的函数
  4. 指令pre-link function 执行指令
  5. 执行指令post-link函数的指令。

您可以决定在post-link函数中执行-link函数。一旦你知道了,

  1. 执行controllerpre-和post-link函数被屏蔽的内容指令。

transclude函数在步骤3-#5中可用,当调用它时,它向cloneAttachFn提供一个新的被屏蔽元素的副本,您可以将该副本作为transclude函数的参数:

代码语言:javascript
复制
link: function(scope, element, attrs, ctrls, transclude){
    transclude(scope, function cloneAttachFn(clone){
      // you can do DOM manipulation of the clone instance here
    });
}

注意,cloneAttachFn中的DOM操作将应用于已排除DOM的实例,而不是应用于预编译的DOM模板。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29304763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档