AngularJS: $watch за объектами

Чтобы не вызывалась лишний раз функция, нужно добавить еще один параметр true в $watch:

$rootScope.$watch('session', function (value) {
	$scope.profile = ProfileDataService.get();
}, true);

Но он иногда запускает обработчик, поэтому можно сделать внутри дополнительную проверку:

$rootScope.$watch('session', function (value, valueOld) {
	if (! angular.equals(value, valueOld)) {
		$scope.profile = ProfileDataService.get();
	}
});

LEAVE A COMMENT