我已经浏览了这个链接https://www.undefinednull.com/2014/07/07/practical-guide-to-prelink-postlink-and-controller-methods-of-angular-directives/,他们说链接和控制器执行的顺序(从头到尾)是
但是在这里我读到AngularJS: What is the need of the directive's link function when we already had directive's controller with scope?链接在控制器之前执行。我应该相信哪一个?
答案 0 :(得分:2)
如果它是link
,那么controller
就不可能require
其他指令,并在link
函数中使用他们的控制器。
查看documentation中的代码:
var directiveDefinitionObject = {
controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
controllerAs: 'stringIdentifier',
require: 'siblingDirectiveName', // requiring another directive
compile: function compile(tElement, tAttrs, transclude) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { ... }, //siblingDirectiveName's controller is available in link function
post: function postLink(scope, iElement, iAttrs, controller) { ... }
}
},
};
return directiveDefinitionObject;
});
为了支持这个陈述,我们可以阅读同一页面:
控制器
控制器构造函数。控制器在之前预链接阶段实例化,并且可以被其他指令访问(请参阅require属性)。这允许指令彼此通信并增强彼此的行为。