This situation occurs when an event is fired βoutsideβ of Angular, and Angular knows nothing about it.
The blur event comes from the DOM, or maybe you have an AJAX callback that triggers an update. You will notice that nothing happens until you somehow interact with the application that causes Angular to wake up. George Thomas's answer is correct: you must set Angular $scope so that he knows about this event, but, according to Angular developers, a more correct way is to wrap your code in a $apply() function like this
$("#myElement").blur(function() { $scope.$apply(function() { $http({method: 'GET', url: '/someUrl'}); }); });
Thus, errors in the code correctly propagate to Angular.
I found this information in an extremely good presentation on the Misko Hevery directives - the developer who created them: http://www.youtube.com/watch?v=WqmeI5fZcho . If you use Angular for a while in a project, but are not quite sure what is really happening, this video is 50 minutes of your life well spent!
source share