$rootScope.Scope.$watchCollection()

$watchCollection(obj, listener);

Shallow watches the properties of an object and fires whenever any of the properties change (for arrays, this implies watching the array items; for object maps, this implies watching the properties). If a change is detected, the listener callback is fired.

  • The obj collection is observed via standard $watch operation and is examined on every call to $digest() to see if any items have been added, removed, or moved.
  • The listener is called whenever anything within the obj has changed. Examples include adding, removing, and moving items belonging to an object or array.
$scope.names = ['igor', 'matias', 'misko', 'james'];
$scope.dataCount = 4;

$scope.$watchCollection('names', function(newNames, oldNames) {
  $scope.dataCount = newNames.length;
});

expect($scope.dataCount).toEqual(4);
$scope.$digest();

//still at 4 ... no changes
expect($scope.dataCount).toEqual(4);

$scope.names.pop();
$scope.$digest();

//now there's been a change
expect($scope.dataCount).toEqual(3);

Parameters

Param Type Details
obj stringfunction(scope)

Evaluated as expression. The expression value should evaluate to an object or an array which is observed on each $digest cycle. Any shallow change within the collection will trigger a call to the listener.

listener function(newCollection, oldCollection, scope)

a callback function called when a change is detected.

  • The newCollection object is the newly modified data obtained from the obj expression
  • The oldCollection object is a copy of the former collection data. Due to performance considerations, theoldCollection value is computed only if the listener function declares two or more arguments.
  • The scope argument refers to the current scope.

Returns

function()

Returns a de-registration function for this listener. When the de-registration function is executed, the internal watch operation is terminated.

doc_AngularJS
2016-03-29 16:10:40
Comments
Leave a Comment

Please login to continue.