具有角$间隔的Pb

时间:2014-09-16 13:22:47

标签: javascript angularjs

有人可以向我解释this plunker

中附加的内容

JS

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, $interval) {
  $scope.name = 'World';


  var plop = $interval(function(){}, 1000);

  $scope.test = function(){
    console.log("test");
  }

})

HTML

<body ng-controller="MainCtrl">  
  <p ng-class="test()">Hello {{name}}!</p>
</body>

如果您打开控制台,则可以看到&#34; test&#34;正在重复输出,但它不在$ interval函数!!!

1 个答案:

答案 0 :(得分:5)

ng-class是在每个$digest循环上计算的属性。由于<p>元素ng-class是对test()的函数调用,test()将在$digest上进行评估。

$interval是绑定到角度消化循环的setInterval的包装器,所以它本质上是说&#34;每秒运行一次摘要循环&#34;。当摘要循环运行时,将再次评估test(),这会导致再次打印控制台消息。