ng-controller中的setInterval在没有$ http的情况下无法工作

时间:2016-06-16 14:53:17

标签: angularjs

我遇到了这个奇怪的问题。出于一些奇怪的原因,我的setInterval在没有$http.get()的情况下无法工作。目前,$http被设置为托管所述间隔的控制器的依赖项。但是,如果我摆脱它们(依赖和调用本身)setInterval停止工作。我不知道如何解决这个问题。

这是控制器的代码

main.controller('timeCtrl', function($scope, $http, clockService) {
    $scope.time = clockService.timeBase();
    setInterval(function() {
        $http.get();
        $scope.time = clockService.timeBase();
    }, 500);
});

删除依赖项后,它看起来像这样

main.controller('timeCtrl', function($scope, clockService) {
    $scope.time = clockService.timeBase();
    setInterval(function() {
        $scope.time = clockService.timeBase();
    }, 500);
});

但它不起作用。到底有什么不对?

1 个答案:

答案 0 :(得分:2)

setInterval是JS函数,它不会触发摘要周期,因此角度不会看到某些内容发生了变化。 尝试使用它的角度版本 - $interval

P.S。当一个承诺得到解决时,它会触发摘要周期,以便调用$ http来完成这项工作,但这显然不是你想要的方式