具有角$间隔的Pb

use*_*119 2 javascript angularjs

有人可以解释一下这个附加物中的附加物

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");
  }

})
Run Code Online (Sandbox Code Playgroud)

HTML

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

如果你打开控制台,你可以看到"test"正在重复输出,但它不在$ interval函数中!

Tom*_*m A 5

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

$intervalsetInterval绑定到angular的摘要循环的包装器,因此它实质上是说"每秒运行一次摘要循环".当摘要循环运行时,test()将再次进行评估,这将导致再次打印控制台消息.