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?

questionAnswers(21)

yourAnswerToTheQuestion