Javascript 将$scope对象作为参数提供给$digest中的观察者的逻辑
我不太清楚为什么$scope对象同时作为参数提供给观察器和侦听器函数。 我找到了t,它是在$digest内遍历watchers数组的片段:Javascript 将$scope对象作为参数提供给$digest中的观察者的逻辑,javascript,angularjs,function,Javascript,Angularjs,Function,我不太清楚为什么$scope对象同时作为参数提供给观察器和侦听器函数。 我找到了t,它是在$digest内遍历watchers数组的片段: this.$$watchers.forEach(function(watcher) { var newValue = watcher.watchFn(self); var oldValue = watcher.last; if (watcher.deep && newValue === oldValue) {
this.$$watchers.forEach(function(watcher) {
var newValue = watcher.watchFn(self);
var oldValue = watcher.last;
if (watcher.deep && newValue === oldValue) {
deppCompare(newValue, oldValue);
} else {
if (newValue !== oldValue) dirty = true;
}
watcher.listenerFn(newValue, oldValue, self);
watcher.last = newValue;
});
在幕后,当您将其声明为某个范围内的watch函数时,请解析函数中给定的表达式:
//The code of a random watcher
$scope.$watch('myVariable', listenerFunction);
//Behind the scenes
$scope.$watch(function(scope){
return scope.myVariable;
}, listenerFunction);
注册观察者时,预期的行为是“在这个范围内,我需要观察这个范围内附加的变量的变化”,因此,$watch()的第一个参数在幕后
由angular解析,用于返回预期变量应该是连接了watch函数的范围内的变量