从angularjs的文档中,定义指令时,有一个postLinkin compile和一个postLinkinlink
postLink
compile
link
myModule.directive('directiveName', function factory(injectables) { var directiveDefinitionObject = { priority: 0, template: '<div></div>', templateUrl: 'directive.html', replace: false, transclude: false, restrict: 'A', scope: false, compile: function compile(tElement, tAttrs, transclude) { return { pre: function preLink(scope, iElement, iAttrs, controller) { ... }, post: function postLink(scope, iElement, iAttrs, controller) { ... } } }, link: function postLink(scope, iElement, iAttrs) { ... } }; return directiveDefinitionObject; });
它们之间有什么区别?我注意到postLinkin link的论点少于in 的论点compile。还有其他区别吗?
它们没有什么不同,您所拥有的只是文档中的伪代码。postLink函数只是最重要的函数,因此有多种方法可以声明它。
这里以柱塞为例…
…这是一些伪代码,显示了postLink函数的不同声明:
app.directive('dir1', function () { return function(scope, elem, attr) { //this is the same }; }); app.directive('dir2', function () { return { link: function(scope, elem, attr) { //this is the same } }; }); app.directive('dir3', function () { return { compile: function compile(tElement, tAttrs, transclude) { return { post: function postLink(scope, elem, attrs) { //this is the same } } } }; });
…您只需要一个。