初学Angular,遇到了很多问题,以后会将关于Angular的问题解决与体会一一纪录。因为是初学,所以主题会比较简单~
在用moment.js写倒计时组件时,遇到一个问题:html中绑定的变量按理说应该每秒变化一次,是在controller里控制的,断点调试时发现变量是变化的,但是html不变。代码如下:
function countDown (pause_time) { $scope.interval = setInterval(function () { var diff = pause_time - moment().unix(); var duration = moment.duration(diff, 'seconds'); if (diff !== 0) { $scope.duration = '0' + duration.hours() + ':' + moment(duration.asMilliseconds()).format('mm[:] ss'); } else { $scope.duration = ''; $scope.status = '运行中'; clearInterval($scope.interval); } }, 1000); }
后来发现是因为在seInterval方法中变量变化但是没有执行$digest loop。所以在每秒变量变化之后执行$scope.$digest();就可以了。
链接文章:http://www.tuicool.com/articles/MFjeQry