Daily Archives: 20.04.2015
AngularJS: как следить за изменением значения произвольных функций
Иногда бывает нужно следить за значением, возвращаемым из функции, не привязанной к $scope (т.е. не являющейся его методом). Допустим, есть некая сложная функция:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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 }; } |
Для того, чтобы отслеживать её изменения, нужно сделать так:
1 2 3 4 5 |
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