This a technique that's been leveraged since the early days of programming in general. In JavaScript, you may have achieved this with global function delegates or jQuery's event system. In AngularJS, you may have created a service and stored values in it.
In Angular, you can still create a root level service, store values in it, use Angular's EventEmitter class, which is really meant for directives, or use an rxjs/Subscription to create a fancy messaging bus for yourself.
As a pattern, global events are open to rampant abuse and rather than helping maintain a decoupled application architecture, it leads to global state over time. Global state or even localized state at the controller level, where functions read and write to ...