Angular Directive编译方法不止一次

时间:2014-02-20 14:32:39

标签: angularjs

所以我在几个地方读过(例如herehere)指令的编译方法只调用一次,即使有多个指令实例并且调用了链接函数对于每个实例,但在此fiddle example中,3个实例的compile方法被调用3次。那是为什么?

<focus-tooltip></focus-tooltip>
<focus-tooltip></focus-tooltip>
<focus-tooltip></focus-tooltip>

angular.module('app', [])
.directive('focusTooltip', function() {
    return {
        restrict : 'E',
        compile : function () {
            console.log(this)
        }
    }
});

1 个答案:

答案 0 :(得分:3)

对于使用该指令的每个元素,都会调用一次编译函数。术语实例并不意味着每个ngApp只调用一次编译函数。这意味着即使存在该元素的克隆,也会调用一次编译函数。例如,ng-repeat创建元素的克隆。请参阅演示此行为的PLUNKR