Below are the most general ways for communicating between application modules using core Angular functionality :
Using events
Using services
By assigning models on $rootScope
Directly between controllers [$parent, $$childHead, $$nextSibling, etc.]
Directly between controllers [ControllerAs, or other forms of inheritance]