如何保证定时任务及时刷新视图中的值?
发布于 1年前 作者 Thomsen 1348 次浏览 来自 问答

视图中有一model,通过定时任务去赋值,比如每隔1秒加1,

如何保证页面中的值及时更新过来?

9 回复

angular 自动two-way binding, 所以$scope上的值应该是及时更新到View的, 除非你的代码运行在非 angular context中

@BenBBear setInterval执行的方法是不是不属于angular context。在controller中1秒去刷新页面的值,页面不能够及时刷新。

@Thomsen

定时任务不放在angular context里面本身就有点不合理

可以使用事件 $emit 到angular里面, 或者

if(!$scope.$$digest){
    $scope.$apply();
}

我记得是这样

用 $interval(fn, delay, [count], [invokeApply]) 替代 setInterval,如果非要用setInterval,需要自己调用 $scope.$apply()

@zcgly 是不是$interval本身是指令,就在angular context中了。通过$scope.$watch 和 $scope.$apply() 结合可以实现刷新。

@BenBBear 直接使用$scope.$$digest可以吗,还是结合$watch比较好。

@Thomsen 尽量少自行digest吧

而且if(!$scope.$$digest) 是判断是否现在已经有一个$digest在运行, 如果不是, 则开启一个。

angular有很多设计问题,避之不及。 如果你or你的同伴能忍受暂时只有iOS, 并且画上2-3天学一下 react+redux+react-native, 建议使用react-native, 等到 angular2 和 ionic2 出来,再看ionic也不迟

@BenBBear 就怕那时已经用了react-native就不想用回ionic了。google重新设计angular2,导致angular1无法平滑升级。不知angular2的性能能够提升多少。

@Thomsen 有一个靠谱不就行了么。。。。

回到顶部