Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

$watcher на Service Angular

Хочу делать так чтоб обновления Сервиса изменились в контролере, без $broadcast. Попробовал делать так, но результатa 0
//Controller 1 $scope.tpl = MyService.getTemplate(); $scope.$watch($scope.tpl, function(oldValue, newValue){ $scope.tpl = newValue; });
//Controller 2 MyService.setTemplate('template1');
//Service var template = 'template';
var setTempale = function(tpl) { tempalate = tpl; }
var getTempale = function() { return template; }
в сервисе наверняка изменяется но в Controller 1 остается прежнее значение.


Ответ

Если я всё правильно понял, то должно быть что-то вроде этого:
$scope.$watch( function() { return MyService.getTemplate(); }, function(oldValue, newValue) { $scope.tpl = newValue; } );
Первый аргумент функции $watch должен быть либо строкой, по которой будет определено имя наблюдаемого свойства в $scope, либо функция, которая будет возвращать наблюдаемое значение при каждом dirty check. В вашем случае как раз нужно сделать функцию.

Комментариев нет:

Отправить комментарий