即使使用评论
,我也难以理解以下代码// 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被调用了多少次?这是递归吗?
答案 0 :(得分:5)
您所展示的代码简而言之
$watch()
返回值(请参阅下面的$rootScope.$watch
返回值) $watch()
时,会调用引用的function
- 这会导致$watch()
的 ubinding 阅读这篇好文章
摘要中的一小段摘录:
如您所见,我们正在存储
$watch()
语句返回的函数引用;然后,一旦$watch()
触发几次,我们就会调用那个存储的方法,取消绑定$ watch()监听器。
在该示例中,有一个 if 语句,可以帮助我们决定何时是删除$watch()
的最佳时间(例如,在第一次评估后)...
scope.$watch()
更详细的定义可以在这里找到:
正如我们从这个摘录中看到的那样:
$watch(watchExpression, [listener], [objectEquality]);
...
返回此侦听器的注销功能。