Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Это старая версия документа!
Сигнатура метода $watch():
$deregistrationFn = $watch(watchExpression, listenerHandler, [objectEquality]);
watchExpression (String | Function)
Имя наблюдаемой переменной или ф-ция, которая возвращает наблюдаемое значение.
listenerHandler (Function)
Callback ф-ция, которая будет обрабатывать каждое изменение watchExpression.
objectEquality (Boolean)
Сравнивать объекты при помощи angular.equals вместо сравнения по ссылке? По умолчанию проверяется равенство ссылок на объект
Регистрация слушателя (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 });
Сигнатура метода:
$deregistrationAllFn = $scope.$watchGroup(arrayWatchExpressions, listenerHandler);
arrayWatchExpressions (Array)
Массив наблюдаемых выражений (watchExpression), каждый из которых будет отслеживаться с помощью $watch().
Отслеживает изменения только структуры коллекции (хеш-объекта, Map Object) или массива (Array). Не проверяет изменение свойств вложенных в коллекцию элементов.
Сигнатура метода:
$deregistrationFn = $watchCollection(watchObject, listenerHandler);
watchObject (Object | Array)
Наблюдаемая коллекция объектов (хеш-объект) или массив.