AngularJS: Como observar variáveis de serviço?
Eu tenho um serviço, diga:
factory('aService', ['$rootScope', '$resource', function ($rootScope, $resource) {
var service = {
foo: []
};
return service;
}]);
E eu gostaria de usarfoo
para controlar uma lista que é renderizada em HTML:
<div ng-controller="FooCtrl">
<div ng-repeat="item in foo">{{ item }}</div>
</div>
Para que o controlador detecte quandoaService.foo
é atualizado eu tenho montado este padrão onde eu adiciono um serviço ao controlador$scope
e depois usar$scope.$watch()
:
function FooCtrl($scope, aService) {
$scope.aService = aService;
$scope.foo = aService.foo;
$scope.$watch('aService.foo', function (newVal, oldVal, scope) {
if(newVal) {
scope.foo = newVal;
}
});
}
Isso parece longo, e tenho repetido isso em todos os controladores que usam as variáveis do serviço. Existe uma maneira melhor de realizar a observação de variáveis compartilhadas?