AngularJS: как следить за изменением значения произвольных функций

Иногда бывает нужно следить за значением, возвращаемым из функции, не привязанной к `$scope` (т.е. не являющейся его методом).
Допустим, есть некая сложная функция:

function getParams()
{
	if (! map) {
		return false;
	}
	var center = map.getCenter(),
		size = map.getSize(),
		markersList = exportMarkers();

	return {
		zoom: map.getZoom(),
		lat: roundCoord(center.lat),
		lng: roundCoord(center.lng),
		minZoom: 3,
		maxZoom: 18,
		mapWidth: size.x,
		mapHeight: size.y,
		markers: markersList
	};
}

Для того, чтобы отслеживать её изменения, нужно сделать так:

var scope = $rootScope.$new(true);
scope.$watch(function (scope) { return getParams();}, function () {
	// do anything. for instance:
	// $rootScope.$broadcast('params_changed');
}, true);

Продолжить чтение:
http://www.bennadel.com/blog/2658-using-scope-watch-to-watch-functions-in-angularjs.htm

LEAVE A COMMENT