title: When should $scope.apply() be used in angular?
body: <p>What does $scope.apply do? In some cases, if $scope.apply() is not present, $scope.watch() is not triggered. For example,</p>
  
  <p>The controller has the following:</p>
  
  <pre><code>setTimeout(function(){
    $scope.person = someperson;
  }, 500);
  </code></pre>
  
  <p>person is being watched in the directive.</p>
  
  <pre><code>$scope.watch('person', function(){
    console.log($scope.person);
    $scope.apply();
  });
  </code></pre>
  
  <p>In this case, watch is triggered only when apply is there.</p>