If you write any code that uses Ajax without $http , or listens for events without using Angular’s ng-* listeners, or sets a timeout without $ timeout , you should wrap your code in $scope.$apply For Details: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html