gpt4 book ai didi

javascript - AngularJs 的 $watch 函数 - 没有返回?

转载 作者:行者123 更新时间:2023-11-30 12:49:44 27 4
gpt4 key购买 nike

根据$watch的文档:

The watchExpression is called on every call to $digest() and should return the value that will be watched.

如果是这样,这段代码如何工作? ( jsbin )

 $scope.$watch(function() {
var total = 0;
for (var i = 0; i < $scope.items.length; i++) {
total = total + $scope.items[i].price * $scope.items[i].quantity;
}
$scope.bill.total = total;
$scope.bill.discount = total > 100 ? 10 : 0;
$scope.bill.subtotal = total - $scope.bill.discount;
});

我在这里没有看到任何return

并且文档明确表示应该返回要观察的返回值。

最佳答案

在每个digest 上调用watchwatch 正在查看 watchExpression(通常是一个变量;$watch() 的第一个参数)是否已经改变。在您的情况下, $watch() 的第一个参数是一个函数,而不是一个变量(这实际上不是问题,而是导致问题的原因:))。因此,每次调用 digest 时,它都会执行 watch 并执行您的函数。这就是它起作用的原因。

编辑:你的那个函数可以或者应该有一个 return 它将返回一个变量,要观察变化......无论如何你的函数中的任何代码,在 return 声明之前将是执行。

关于javascript - AngularJs 的 $watch 函数 - 没有返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com