我在AngularJS的文献中看到过许多对AngularJS 前后链接函数的引用。
然而,我不确定这些是否可以定制或是框架的内部。
换句话说,作为AngularJS开发者,我可以将自己的前后链接函数提供给我的自定义指令吗?
答案 0 :(得分:31)
是的,你可以按照@ Mikke的回答。总而言之,有四种方式来声明链接函数:
从compile
内明确指定preLink
和postLink
函数:
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { ... },
post: function postLink(scope, iElement, iAttrs, controller) { ... }
}
}
从compile
内隐式退回postLink
:
compile: function compile(tElement, tAttrs, transclude) {
return function postLink( ... ) { ... }
}
从link
内明确指定preLink
和postLink
:
link: {
pre: function preLink(scope, iElement, iAttrs, controller) { ... },
post: function postLink(scope, iElement, iAttrs, controller) { ... }
}
隐含地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( ... ) { ... }
},
}