使用链接属性与使用带有预链接和后链接的编译有什么区别?

时间:2015-03-27 15:53:59

标签: angularjs angularjs-directive

This question使用指令定义中的compile属性提供有关预链接和后链接的信息。但是,它没有说明直接使用link属性意味着什么。我在谈论这两件事之间的区别:

A:

myApp.directive('log', function() {
    return {
      link: function(...){...},
      // other stuff here
    };
});

B中。

myApp.directive('log', function() {  
    return {  
      compile: function(...){
          return {
            pre: function preLink( scope, element, attributes ) {
               // stuff
            },
            post: function postLink( scope, element, attributes ) {
                // stuff
            }
          }
      },  
      // other stuff here  
    };  
});  

什么是link功能?它应该结合前后?我不明白如何以不同的方式使用这两种模式。

1 个答案:

答案 0 :(得分:3)

没有功能差异 - 只是API“糖”:

link: function postlink(){...}

是以下的API快捷方式:

link: {
  post: function postlink(){...}
}

,其完整形式为:

link: {
  pre: function prelink(){...},
  post: function postlink(){...}
}

,它本身就是

的捷径
compile: function(){
  return {
     pre: function prelink(){...},
     post: function postlink(){...}
  };
}

,可以稍微简化为:

compile: function(){
  return function postlink(){...}
}

指定compile属性时,将忽略link属性。

这是关于主题的Angular documentation