AngularJS : Basic $watch not working

后端 未结 3 1514
鱼传尺愫
鱼传尺愫 2020-12-15 06:13

I\'m attempting to set up a watch in AngularJS and I\'m clearly doing something wrong, but I can\'t quite figure it out. The watch is firing on the immediate page load, but

3条回答
  •  我在风中等你
    2020-12-15 06:45

    It's because you update the value without Angular knowing.

    You should use the $timeout service instead of setTimeout, and you won't need to worry about that problem.

    function testCtrl($scope, $timeout) {
        $scope.hello = 0;
    
        var t = $timeout( function() { 
            $scope.hello++;
            console.log($scope.hello); 
        }, 5000);
    
        $scope.$watch('hello', function() { console.log('watch!'); });
    }
    

    Or you could call $scope.$apply(); to force angular to recheck the values and call watches if necessary.

    var t = setTimeout( function() { 
        $scope.hello++;
        console.log($scope.hello); 
        $scope.$apply();
    }, 5000);
    

提交回复
热议问题