$digest

by Santosh Thakur

HTML

<div ng-app="myApp">
  <div ng-controller="MessageController">
    Delayed Message: {{message}}
  </div>
</div>

JavaScript

/* What happens with $apply */
angular.module('myApp', []).controller('MessageController', function($scope) {

  $scope.getMessage = function() {
    $scope.message = 'Fetched after 3 seconds';
    setTimeout(function() {
      $scope.$watch(function() {
        //wrapped this within $apply
        $scope.message = 'Fetched after 4 seconds';
        console.log('message:' + $scope.message);
      });
      $scope.$apply();
    }, 2000);
  }
  $scope.getMessage();
});