老实说,我不知道为什么这不起作用。它应该工作。
https://jsfiddle.net/4utpnsh9/
HTML
<div ng-app="app" ng-controller="IndexController as vm">
<span>{{vm.Timer}}</span>
</div>
角
$interval(function() {
this.Timer = Math.round(new Date().getTime() / 1000.0);
}, 1000);
当this.Timer
更新时,它不会在视图中更新。虽然我console.log()
但它确实如此。如果我删除了vm.Timer
并简单地将其Timer
并将其应用于$scope
而不是this
,那么它可以完美运行,正如您自己可以看到的那样:{{3} }
我已经在另一个堆栈上多次完成了这个,但由于某种原因,我无法弄清楚为什么它不起作用。我做错了什么?
答案 0 :(得分:5)
因为this
不是您认为的! this
正在改变区间回调中的上下文。使用箭头功能,或设置一些上下文!
$interval(() => {
this.Timer = Math.round(new Date().getTime() / 1000.0);
}, 1000);
或者
$interval(function() {
this.Timer = Math.round(new Date().getTime() / 1000.0);
}.bind(this), 1000);