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 将$scope对象作为参数提供给$digest中的观察者的逻辑_Javascript_Angularjs_Function - Fatal编程技术网

Javascript 将$scope对象作为参数提供给$digest中的观察者的逻辑

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) {

我不太清楚为什么$scope对象同时作为参数提供给观察器和侦听器函数。 我找到了t,它是在$digest内遍历watchers数组的片段:

    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函数的范围内的变量