如果指令使用templateUrl而不是模板,则不会调用angular prelink

时间:2013-08-08 15:07:52

标签: angularjs angularjs-directive prelink

在angular.js的compileTemplateUrl函数中。 derivedSyncDirective的'controller:null'导致没有为该元素存储控制器函数。 所以在nodeLinkFn(它的预链接部分)中调用的getControllers将抛出异常,因此不会调用prelink。 见http://plnkr.co/edit/yMcurPowZmxCOv0luE5s 我不明白为什么'controller:null'在这里。有人知道吗?

1 个答案:

答案 0 :(得分:1)

如果希望按名称引用控制器,则需要将控制器传递给指令。首先,您需要在模板中使用指令指定控制器,如此

<div ess-tag ng-controller="TagController">
    <span>test</span>
</div>

在指令中,添加require语句,如果您希望按名称引用控制器,它会告诉控制器在哪里找到注入的控制器:

require: 'ngController',
controller: 'TagController',