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
或者我建议一种新的方法
我正在调用工厂服务来增加计数器值,当计数器值大于 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
或者我建议一种新的方法