balteo
balteo

Reputation: 24679

Can AngularJS directive pre-link and post-link functions be customized?

I have seen many references to AngularJS pre- and post-link functions in literature about AngularJS.

I am not sure however whether these can be customized or are internal to the framework.

In other words, as an AngularJS developper, can I provide my own pre and post link functions to my custom directives?

Upvotes: 12

Views: 10512

Answers (2)

Beyers
Beyers

Reputation: 9108

Yes you can, as per @Mikke's answer. To sum up, there are four ways to declare linking functions:

  1. From within compile specifying both preLink and postLink functions explicitly:

    compile: function compile(tElement, tAttrs, transclude) {
      return {
        pre: function preLink(scope, iElement, iAttrs, controller) { ... },
        post: function postLink(scope, iElement, iAttrs, controller) { ... }
      }
    }
    
  2. From within compile returning only postLink implicitly:

    compile: function compile(tElement, tAttrs, transclude) {
      return function postLink( ... ) { ... }
    }
    
  3. From within link specifying both preLink and postLink explicitly:

    link: {
      pre: function preLink(scope, iElement, iAttrs, controller) { ... },
      post: function postLink(scope, iElement, iAttrs, controller) { ... }
    }
    
  4. From withing link using postLink implicitly:

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

Upvotes: 31

Mikke
Mikke

Reputation: 2167

Yes, you can provide your own pre and post link functions. See the directive blueprint at 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( ... ) { ... }
    },
}

Upvotes: 4

Related Questions