我不知道为什么会多次调用它.
angular.module('HelloApp', []) .directive('testDirective', function () { return { restrict: 'E', replacement: true, template: ' Test Directive', link : function (scope, element, attrs) { console.log('link'); var cnt = 0; scope.test = function () { cnt += 1; console.log('test', cnt); //element.append('test' + cnt + '
'); } } } });
控制台结果是
link test 1 test 2 test 3
这是JSFIDDLE:http://jsfiddle.net/yh9V5/ 打开链接并查看console.log
在摘要周期运行时,您在AngularJS中使用的所有表达式都会被多次评估.这是为脏检查完成的,它验证表达式的当前值是否与最后一个值不同.
这意味着如果在表达式中使用方法,则不能依赖于调用方法的次数.
请参阅"范围生命周期"部分以了解它是如何发生的http://docs.angularjs.org/guide/scope