Search code examples
angularjsangularjs-service

$watch inside a service?


Is it possible to set up a $watch on an array of objects inside a service (I'd like the $watch declaration itself to be inside the service)?


Solution

  • You can add any expression to the set of watches by injecting the $rootScope and using a function a first argument to the $watch method. Pseudo-code:

    $rootScope.$watch(function() {
      return //value to be watched;
    }, function watchCallback(newValue, oldValue) {
      //react on value change here
    });
    

    Don't forget about the third, Boolean argument to the $watch method. You need to specify true if you want to deep-watch an entire object for changes.