我一直在做一个我继承的 angular 项目,我无法联系到原作者。有一个我不确定的 watch 表达,我想知道是否有人可以帮助我理解代码:

$scope.$watch(calculator.value, function(newVal, oldVal) {
    if(newVal !== oldVal) {
        i = newVal;
        updateCalculation();
    }
});

令我困惑的是这行代码: newVal !== oldVal 。知道为什么需要这样的支票吗?

最佳答案

范围的 $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()。不是第一次调用观察者。

关于javascript - Angular $scope.$watch newVal !== oldVal,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33105362/

10-11 02:04