javascript – 为什么ng-class被调用多次?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么ng-class被调用多次?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How does data binding work in AngularJS?12个
我不知道为什么叫几次.
  1. <!doctype html>
  2. <html ng-app="HelloApp">
  3. <body>
  4. <test-directive></test-directive>
  5. </body>
  6. </html>
  7.  
  8. angular.module('HelloApp',[])
  9. .directive('testDirective',function () {
  10. return {
  11. restrict: 'E',replacement: true,template: '<div ng-class="test()">Test Directive</div>',link : function (scope,element,attrs) {
  12. console.log('link');
  13. var cnt = 0;
  14. scope.test = function () {
  15. cnt += 1;
  16. console.log('test',cnt);
  17. //element.append('<h6>test' + cnt + '</h6>');
  18. }
  19. }
  20. }
  21. });

控制台的结果是

  1. link
  2. test 1
  3. test 2
  4. test 3

这是JSFIDDLE:http://jsfiddle.net/yh9V5/
打开链接并查看console.log

解决方法

您在AngularJS中使用的所有表达式在摘要循环运行时都会多次进行评估.这是为了检查表达式的当前值是否与最后一个值不同而进行的.

这意味着如果在表达式中使用方法,则无法依赖多少次调用方法.

请参阅“适用范围生命周期”一节了解如何发生http://docs.angularjs.org/guide/scope

猜你在找的JavaScript相关文章