Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Watch multiple $scope attributes

Is there a way to subscribe to events on multiple objects using $watch

E.g.

$scope.$watch('item1, item2', function () { }); 
like image 830
Greg Avatar asked Aug 14 '12 12:08

Greg


2 Answers

Starting from AngularJS 1.3 there's a new method called $watchGroup for observing a set of expressions.

$scope.foo = 'foo'; $scope.bar = 'bar';  $scope.$watchGroup(['foo', 'bar'], function(newValues, oldValues, scope) {   // newValues array contains the current values of the watch expressions   // with the indexes matching those of the watchExpression array   // i.e.   // newValues[0] -> $scope.foo    // and    // newValues[1] -> $scope.bar  }); 
like image 115
Paolo Moretti Avatar answered Sep 18 '22 15:09

Paolo Moretti


Beginning with AngularJS 1.1.4 you can use $watchCollection:

$scope.$watchCollection('[item1, item2]', function(newValues, oldValues){     // do stuff here     // newValues and oldValues contain the new and respectively old value     // of the observed collection array }); 

Plunker example here

Documentation here

like image 42
Răzvan Flavius Panda Avatar answered Sep 21 '22 15:09

Răzvan Flavius Panda