Why ng-class is called several times in directive of angular?
本问题已经有最佳答案,请猛点这里访问。
我不知道为什么叫了好几次。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!doctype html> <html ng-app="HelloApp"> <body> <test-directive></test-directive> </body> </html> 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('<h6>test' + cnt + '</h6>'); } } } }); |
控制台结果是
1 2 3 4 | link test 1 test 2 test 3 |
这里是jsFiddle:http://jsFiddle.net/yh9v5/打开链接并查看console.log
当一个摘要循环运行时,在AngularJS中使用的所有表达式都会被多次计算。这是为了进行脏检查,以验证表达式的当前值是否与最后一个值不同。
这意味着,如果在表达式中使用方法,则不能依赖于调用方法的次数。
请参阅"范围生命周期"一节了解它是如何发生的http://docs.angularjs.org/guide/scope
AngularJS编译DOM,这样它就可以创建