Angular中的摘要循环

时间:2016-05-25 18:45:54

标签: angularjs

为什么即使now变量被更改,摘要循环也不会触发以下代码?

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

app.controller('TimeController', function($scope) {
$scope.now = new Date().toLocaleTimeString();

setInterval(function() {
  $scope.now = new Date().toLocaleTimeString();
  console.log($scope.now);
}, 1000);

});

2 个答案:

答案 0 :(得分:3)

使用$interval代替setInterval

app.controller('TimeController', function($scope, $interval) {
    $interval(function() {
        $scope.now = new Date().toLocaleTimeString();
        console.log($scope.now);
    }, 1000);
});

setInterval不是角度构造,因此它不会触发摘要周期。但是,$interval是,因此它会触发循环。

答案 1 :(得分:0)

您无法访问$scope中的setInterval,但您可以使用以下权限访问该范围:

var $myscope = angular.element([Some DOMElement]).scope();

然后调用$digest()已经跟随的相同代码:

$myscope.now = new Date().toLocaleTimeString();
$myscope.$digest(); // this will refresh the UI