логика предоставления объекта $ scope в качестве аргумента наблюдателям в $ digest

0

Я не совсем понимаю, почему объект $ scope предоставлен как аргумент как наблюдателю, так и функции слушателя. Я нашел его бит кода на GitHub, это часть, которая повторяется над массивом наблюдателей в $ digest:

    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;
  });
Теги:
function

1 ответ

0
Лучший ответ

За кулисами, когда вы объявляете это функцией часов в определенной области, угловое синтаксическое разложение выражения, данного в функции:

//The code of a random watcher
$scope.$watch('myVariable', listenerFunction);

//Behind the scenes
$scope.$watch(function(scope){
  return scope.myVariable;
}, listenerFunction);

Когда вы регистрируете наблюдателя, ожидаемое поведение, которое "в ЭТОМ СФЕРАХ, мне нужно следить за изменениями для переменной, включенной в ЭТОЙ СФЕРАХ ", поэтому за кулисами первый аргумент $watch() анализируется угловым для возврата ожидаемая переменная должна быть переменной в области, в которой была добавлена функция часов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню