为什么即使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);
});
答案 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