Reputation: 24679
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
Reputation: 9108
Yes you can, as per @Mikke's answer. To sum up, there are four ways to declare linking functions:
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) { ... }
}
}
From within compile
returning only postLink
implicitly:
compile: function compile(tElement, tAttrs, transclude) {
return function postLink( ... ) { ... }
}
From within link
specifying both preLink
and postLink
explicitly:
link: {
pre: function preLink(scope, iElement, iAttrs, controller) { ... },
post: function postLink(scope, iElement, iAttrs, controller) { ... }
}
From withing link
using postLink
implicitly:
link: function postLink( ... ) { ... }
Upvotes: 31
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