我正在编写一个自定义指令,它使用transclusion。我需要修改已排除DOM内容后,转换已采取place....would,我想这样做,在后链接或控制器或.联系.我不知道这些事情发生的顺序在哪里,所以我不知道如何确保在转移发生之后执行我的JS。
发布于 2015-03-27 18:07:07
转换发生在编译阶段。角的$compile服务遍历DOM,如果指令已经启用,则角提取元素的内容(如果是transclude: true,或者元素本身--用于transclude: 'element'),编译它们,并使已编译的内容可以绑定到转换作用域中。
因此,执行的顺序是:
compile函数被屏蔽的内容指令的执行compile函数执行返回pre和post-link函数。controller 的函数pre-link function 执行指令post-link函数的指令。您可以决定在post-link函数中执行-link函数。一旦你知道了,
controller、pre-和post-link函数被屏蔽的内容指令。transclude函数在步骤3-#5中可用,当调用它时,它向cloneAttachFn提供一个新的被屏蔽元素的副本,您可以将该副本作为transclude函数的参数:
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模板。
https://stackoverflow.com/questions/29304763
复制相似问题