javascript - Angular $scope.$watch newVal !== oldVal

标签 javascript angularjs

我一直在做一个我继承的 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/

相关文章:

javascript - 如何将 "this week"按钮变成下拉菜单?我究竟做错了什么?

javascript - 在滚动条中动画滚动

javascript - 如果互联网可用,如何刷新网页

angularjs - 启动 AngularJS、NodeJS、Express 和 Firebase?

javascript - 自定义 Angular Directive(指令)中的 ng-repeat 不起作用

javascript - Fitbit API 的 OAuth2 隐式与授权代码授予

javascript - Zeptojs 和 $(全局变量)

javascript - Kendo angularjs Treeview ,默认阻止父节点检查

AngularJS:从模型数组中拼接模型元素时,ng-repeat 列表不会更新

javascript - 从 Controller 调用特定指令实例的函数