在Angular中:编译函数的pre和post方法与link的post和post相同

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)

bri*_*bri 8

编译首先运行(通常是你操作"模板"dom元素的地方).链接运行第二,通常是将指令附加到$ scope的位置.

它们也按特定顺序运行,因此当您设计需要一些"父"指令设置的指令以便正常运行时(例如tr:td sorta事物),您可以使用该事实.

关于编译与链接的时间安排有一篇非常好的文章,你可以看一下更清晰.

此外 - 对于您可能喜欢的类似问题,有一个非常低级别的堆栈答案(请注意,它不是首先列出的那个,它是最受欢迎的一个).

那么,有什么区别?

那么编译前/后链接"与链接功能相同"吗?你决定.

如果在指令上定义compile,框架将忽略您的链接函数(因为编译函数应该返回前/后链接函数).

这有点像link重载compile.postLinklink.pre重载compile.preLink.