Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs中真正返回的$watch方法是什么,以及它是如何工作的?_Javascript_Angularjs_Function_Watch - Fatal编程技术网

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

Javascript angularjs中真正返回的$watch方法是什么,以及它是如何工作的?,javascript,angularjs,function,watch,Javascript,Angularjs,Function,Watch,即使有注释,我也很难理解以下代码 // 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 ov

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

// 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()
    ,它就会调用引用的
    函数
    ——从而导致
    $watch()
    ubinding
读这篇好文章

摘要的小摘录:

如您所见,我们正在存储
$watch()
语句返回的函数引用;然后,一旦
$watch()
触发几次,我们就会调用该存储方法,解除$watch()侦听器的绑定

在该示例中,有一个if语句,它可以帮助我们确定何时是删除该
$watch()
(例如,在第一次评估之后)的最佳时间

范围的更详细定义。$watch()
可在此处找到:

从这篇摘录中我们可以看到:

$watch(watchExpression,[listener],[objectEquality])
返回此侦听器的注销函数


这很容易找到,只需在代码中放置一个断点。您好,递归。递归,你好!这与递归无关。(这就是说,实现似乎有问题,不太可能按预期工作。)@ExpertSystem确实如此。阅读文档后,我发现dereg与watch方法本身无关,它实际上是watch方法返回的一个注销函数。感谢您的回答,尤其是这篇精彩的文章!如果有帮助的话,那太好了。这是一个很好的特性,你也可以检查一次角度,这是扩展得益于。。。某些只读属性只能计算一次。。。为了澄清,watch可以被删除+1:它存储对删除新添加的watcher的函数的引用,因为$watch返回的就是这个函数。