- AngularJS 1.3 release candidate provides $watch(), $watchCollection() and $watchGroup() method.
- These methods are for watching changes of scope variables.Each of these methods has callback function which gets called when the watching properties are changed.
- $watch method is for watching single scope properties.
- $watchCollection() method is for watching a scope property of collection in nature like Array.
- $watchGroup() method is for watching a group of scope properties in AngularJS application.
- In this Demo,"We will create 3 different examples for $watch,$watchCollection and $watchGroup method".
- Below code shows the demo for all the above three methods.
<!DOCTYPE html> <html ng-app="myApplication"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.19/angular.min.js"></script> <meta charset="utf-8"> <title>$parse Service</title> </head> <body ng-controller="MyController"> <h1>$watch Example</h1> <h5>Number: {{aNumber}}{{typeOfNumber}}</h5> <button ng-click="addOne()">+1</button> <br/> <br/> <hr> <h1>$watchCollection Example</h1> <h5>Array Collection: {{numArray}}</h5> <h5>Length of Array: {{numArrayLength}}</h5> <input type="number" ng-model="newNumber"> <button ng-click="pushNumber()">push</button> <br/> <br/> <hr> <h1>$watchGroup Example</h1> <h5>Number 1: {{number1}}{{typeOfNumber1}}</h5> <h5>Number 2: {{number2}}{{typeOfNumber2}}</h5> <h5>Number 3: {{number3}}{{typeOfNumber3}}</h5> <button ng-click="addOneAll()">+1 All</button> <script> var myApplication = angular.module("myApplication", []); myApplication.controller("MyController", function($scope) { $scope.aNumber = 4; $scope.addOne = function() { $scope.aNumber++; }; $scope.$watch("aNumber", function(newValue, oldValue) { $scope.typeOfNumber = $scope.aNumber % 2 === 0 ? "Even" : "odd"; }); $scope.numArray = [2, 3, 4]; $scope.pushNumber = function() { $scope.numArray.push($scope.newNumber); }; $scope.$watchCollection("numArray", function(newValue, oldValue) { $scope.numArrayLength = $scope.numArray.length; }); $scope.number1 = 9; $scope.number2 = 22; $scope.number3 = 112; $scope.addOneAll = function() { $scope.number1++; $scope.number2++; $scope.number3++; }; $scope.$watchGroup(['number1', 'number2', 'number3'], function(newValues, oldValues) { $scope.typeOfNumber1 = newValues[0] % 2 === 0 ? "Even" : "odd"; $scope.typeOfNumber2 = newValues[1] % 2 === 0 ? "Even" : "odd"; $scope.typeOfNumber3 = newValues[2] % 2 === 0 ? "Even" : "odd"; }); }); </script> </body> </html>
- The demo and output of the above code is embedded in below JSBIN link..