gpt4 book ai didi

javascript - angularjs 中的 $watch 方法真正返回什么以及它是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:36 26 4
gpt4 key购买 nike

即使有注释,我也很难理解以下代码

// Store the initial cell value so we can reset to it if need be
var oldCellValue;
var dereg = scope.$watch('ngModel', function() {
oldCellValue = ngModel.$modelValue;
dereg(); // only run this watch once, we don't want to overwrite our stored value when the input changes
});

在这种情况下函数 dereg 被调用了多少次?这是递归吗?

最佳答案

您显示的代码很简单

  • 存储对 (刚刚添加)的引用 $watch() 返回值 (见下文 $rootScope.$watch 返回值)
  • 第一次调用 $watch() 时,它会调用引用的 function - 这会导致 ubinding $watch()

阅读这篇好文章

Unbinding $watch() Listeners In AngularJS

摘要的一小段摘录:

As you can see, we're storing the function reference returned by the $watch() statement; then, once the $watch() fires a few times, we invoke that stored method, unbinding the $watch() listener.

在那个例子中,有一个 if 语句,它可以帮助我们决定什么时候删除 $watch() 的最佳时间(例如在第一次评估)...

scope.$watch() 的更详细定义可以在这里找到:

从这段摘录中我们可以看出:

$watch(watchExpression, [listener], [objectEquality]);

...
Returns a deregistration function for this listener.

关于javascript - angularjs 中的 $watch 方法真正返回什么以及它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842198/

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