use*_*130 11 javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat
在angular指令的编译函数中有一个pre和post.这个前置和后置真的和链接功能一样吗?
例如,在下面的代码中,链接函数是否相同(如果你愿意,则为快捷方式)作为下面的编译函数的前置和后置?
链接
....
link: {
pre: function(scope, elem, attr) {
//stuff
},
post: function(scope, elem, attr) {
//stuff
}
}
....
Run Code Online (Sandbox Code Playgroud)
编译...
....
compile: function(tElem, tAttrs){
return {
pre: function(scope, iElem, iAttrs){
//stuff
},
post: function(scope, iElem, iAttrs){
//stuff
}
}
}
.....
Run Code Online (Sandbox Code Playgroud)
编译首先运行(通常是你操作"模板"dom元素的地方).链接运行第二,通常是将指令附加到$ scope的位置.
它们也按特定顺序运行,因此当您设计需要一些"父"指令设置的指令以便正常运行时(例如tr:td sorta事物),您可以使用该事实.
关于编译与链接的时间安排有一篇非常好的文章,你可以看一下更清晰.
此外 - 对于您可能喜欢的类似问题,有一个非常低级别的堆栈答案(请注意,它不是首先列出的那个,它是最受欢迎的一个).
那么,有什么区别?
那么编译前/后链接"与链接功能相同"吗?你决定.
如果在指令上定义compile,框架将忽略您的链接函数(因为编译函数应该返回前/后链接函数).
这有点像link重载compile.postLink和link.pre重载compile.preLink.