=====Отслеживание изменений данных с помощью $watch()=====
Сигнатура метода $watch():
$deregistrationFn = $watch(watchExpression, listenerHandler, [objectEquality]);
**watchExpression (String | Function)** \\
Имя наблюдаемой переменной или ф-ция, которая возвращает наблюдаемое значение.\\
\\
**listenerHandler (Function)**\\
Callback ф-ция, которая будет обрабатывать каждое изменение //watchExpression//.\\
\\
**objectEquality (Boolean)**\\
Сравнивать объекты при помощи angular.equals вместо сравнения по ссылке? По умолчанию проверяется равенство ссылок на объект\\
**objectEquality**\\
Значение true для аргумента objectEquality может привести к утечке памяти и снижению производительности при наблюдении за сложными объектами!
====$watch()====
Регистрация слушателя (listener):
var APP = window.APP = angular.module('app', ['ngRoute']);
APP.controller('MyController', function($scope, $rootScope) {
$scope.filter = {
env: null
};
var listenerHandler = function (newValue, oldValue, scope) {
if (newValue === oldValue) {
return;
};
// CODE
// Выполняем некие действия, если наблюдаемые данные изменились
};
$watch('filter.env', listenerHandler);
});
В качестве watchExpression можно указать ф-цию, которая будет возвращать наблюдаемое значение:
$scope.$watch(function(scope) {
return scope.watchVariable1 - scope.watchVariable2;
}, function(newValue, oldValue) {
// handle changes
});
====$watchGroup()====
Сигнатура метода:\\
$deregistrationAllFn = $scope.$watchGroup(arrayWatchExpressions, listenerHandler);
**arrayWatchExpressions (Array)**\\
Массив наблюдаемых выражений //(watchExpression)//, каждый из которых будет отслеживаться с помощью //$watch()//.
====$watchCollection()====
Отслеживает изменения только структуры коллекции (хеш-объекта, Map Object) или массива (Array). Не проверяет изменение свойств вложенных в коллекцию элементов.\\
\\
Сигнатура метода:
$deregistrationFn = $watchCollection(watchObject, listenerHandler);
**watchObject (Object | Array)**\\
Наблюдаемая коллекция объектов (хеш-объект) или массив. #watch, #bind listener, #watch collection, #watch group, #digest