AngularJS offers a powerful event infrastructure that affords you the ability to control the application in scenarios where data binding might not be suitable or pragmatic. Even with a rigorously organized application topology, there are lots of applications for events in AngularJS.
AngularJS events are identified by strings and carry with them a payload that can take the form of an object, a function, or a primitive. The event can either be delivered via a parent scope that invokes
$scope.$broadcast(), or a child scope (or the same scope) that invokes
$scope.$on() method can be used anywhere a scope object can be used, as shown here:
(app.js) angular.module('myApp', ) .controller('Ctrl', ...