Angular 当我在 $watch 中更改观察器模式时,手表没有触发

Angular watch doesnt triggering when I change watcher modal inside $watch

我正在调用工厂服务来增加计数器值,当计数器值大于 5 时,我会在手表内再次调用相同的工厂服务。我正在使用手表查看更改后的计数器值。

我的问题是,当计数器变得大于 5 时,它会调用服务,但是当它再次在 watch 内部调用工厂服务时,它会停止调用服务,按照我的说法,它应该进入无限循环,对吗?因为当调用工厂服务时,计数器仍然大于 5。

watch 在 watch 内部修改时是否停止检查 modal 的值?

Here 是 Fiddle

JS代码

var app = angular.module('myApp', []);

app.factory('testFactory', function(){
    return {
        incrementCount:function(a){
                       a++;
                       console.log('called service'+a)
                      return a;
        }
    }               
});


function HelloCtrl($scope, testFactory)
{
    $scope.counter = testFactory.incrementCount(5);
    $scope.$watch('counter', function (newValue, oldValue) {
        if($scope.counter > 5){
            $scope.counter = testFactory.incrementCount($scope.counter);
        }
    });
}

html代码

<div ng-controller="HelloCtrl">
    <p>{{counter}}</p>
</div>

因为你的情况$scope.counter > 5 // === false

你可以做到 $scope.counter >= 5 或者我建议一种新的方法

Check this link