我正在使用AngularJS,我想观察变量是否更改,并减少另一个变量。这是我所拥有的:
$scope.$watch('watchMe', function () {
$scope.decreaseMe--;
)
watchMe变量可用于所有范围。我只有一个控制器,其中既包含watchMe的更改功能,又包含watch的功能。
每次更改watchMe时Watch都会运行两次,并且我知道这是Angular的工作方式。但是,这意味着reduceMe将是错误的,因为它将减少两次。
我尝试过比较旧值和新值,但无法正常工作。
我正在输出旧的/新的/降低的值,这是当watchMe更改一次后得到的结果:
old: 7 new: 8
decreasing 5
old: 7 new: 8
decreasing 4
更改watchMe时仅减少一次我应该怎么做?
更新:
试图制作一个Plunkr来显示此内容,但在Plunkr中,$ watch仅触发一次。
最佳答案
这不行吗?
$scope.$watch('watchMe', function( newVal, oldVal ) {
if( newVal != oldVal ) {
$scope.decreaseMe--;
}
});