我一直致力于我继承的一个有角度的项目,我无法联系原作者。有这样的表达我不确定,我想知道是否有人可以帮助我理解代码:
$scope.$watch(calculator.value, function(newVal, oldVal) {
if(newVal !== oldVal) {
i = newVal;
updateCalculation();
}
});
令我困惑的是这行代码:newVal !== oldVal
。知道为什么需要这样的检查吗?
答案 0 :(得分:7)
范围的$watch
方法将始终执行至少一次的回调。第一次它新旧值是相同的。
$scope.$watch(calculator.value, function(newVal, oldVal) {
if(newVal === oldVal) {
console.log('First time watcher is executed');
}
if(newVal !== oldVal) {
console.log('Watcher called because values changed.');
}
});
您提供的示例表明,只有在值发生变化时才会执行updateCalculations()
。不是第一次调用观察者。
答案 1 :(得分:0)
即使值未发生变化,也会在$ digest循环的每个回合调用$ watch。所以我只能假设只有在值发生变化时才会调用updateCalculation()。
答案 2 :(得分:0)