AngularJS指令可以自定义预链接和后链接功能吗?

时间:2014-02-28 20:38:07

标签: angularjs angularjs-directive

我在AngularJS的文献中看到过许多对AngularJS 前后链接函数的引用。

然而,我不确定这些是否可以定制或是框架的内部。

换句话说,作为AngularJS开发者,我可以将自己的前后链接函数提供给我的自定义指令吗?

2 个答案:

答案 0 :(得分:31)

是的,你可以按照@ Mikke的回答。总而言之,有四种方式来声明链接函数:

  1. compile内明确指定preLinkpostLink函数:

    compile: function compile(tElement, tAttrs, transclude) {
      return {
        pre: function preLink(scope, iElement, iAttrs, controller) { ... },
        post: function postLink(scope, iElement, iAttrs, controller) { ... }
      }
    }
    
  2. compile内隐式退回postLink

    compile: function compile(tElement, tAttrs, transclude) {
      return function postLink( ... ) { ... }
    }
    
  3. link内明确指定preLinkpostLink

    link: {
      pre: function preLink(scope, iElement, iAttrs, controller) { ... },
      post: function postLink(scope, iElement, iAttrs, controller) { ... }
    }
    
  4. 隐含地link使用postLink

    link: function postLink( ... ) { ... }
    

答案 1 :(得分:4)

是的,您可以提供自己的前后链接功能。请参阅Angular Docs' Comprehensive Directive API处的指令蓝图。

{
    compile: function compile(tElement, tAttrs, transclude) {
        return {
            pre: function preLink(scope, iElement, iAttrs, controller) { ... },
            post: function postLink(scope, iElement, iAttrs, controller) { ... }
        }
        // or
        // return function postLink( ... ) { ... }
    },
}