AngularJS: Wie kann ich Servicevariablen beobachten?

Ich habe einen Service, sagen Sie:

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

  return service;
}]);

Und ich würde gerne nutzenfoo So steuern Sie eine Liste, die in HTML gerendert wird:

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

Damit der Controller erkennt, wannaService.foo Ich habe dieses Muster zusammengeschustert, indem ich den Controllern einen Service hinzufüge$scope und dann verwenden$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;
    }
  });
}

Das fühlt sich langweilig an und ich habe es in jedem Controller wiederholt, der die Variablen des Dienstes verwendet. Gibt es eine bessere Möglichkeit, gemeinsam genutzte Variablen zu überwachen?

Antworten auf die Frage(21)

Ihre Antwort auf die Frage