[AngularJs问题] $digest $apply

初学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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值