$broadcast
sends events to child scopes, $emit
sends events to ancestor scopes, and $on
listens for these events. They enable cross-controller communication, though overuse can impact performance and readability. Using services for shared data may be more efficient in large applications.
$scope.$emit('eventName', data); // Emit to ancestor scopes