AngularJS: Jak oglądać zmienne usługi?

Mam usługę, powiedzmy:

factory('aService', ['$rootScope', '$resource', function ($rootScope, $resource) {
  var service = {
    foo: []
  };

  return service;
}]);

I chciałbym użyćfoo kontrolować listę renderowaną w HTML:

<div ng-controller="FooCtrl">
  <div ng-repeat="item in foo">{{ item }}</div>
</div>

Aby kontroler mógł wykryć kiedyaService.foo jest zaktualizowany. Zrobiłem razem ten wzór, w którym dodałem usługę do kontrolera$scope a następnie użyj$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;
    }
  });
}

Wydaje się to długotrwałe i powtarzam je w każdym kontrolerze, który korzysta ze zmiennych usługi. Czy istnieje lepszy sposób na oglądanie współdzielonych zmiennych?

questionAnswers(21)

yourAnswerToTheQuestion