Question
Tried to find some basic information for AngularJS $rootScope.$broadcast
,
But the AngularJS documentation doesn't help much. In easy words why do we use
this?
Also, inside John Papa's [Hot Towel](http://www.johnpapa.net/hot-towel-
angular/) template there is a custom function in the common module named
$broadcast
:
function $broadcast() {
return $rootScope.$broadcast.apply($rootScope, arguments);
}
I did not understand what this is doing. So here are couple of basic questions:
-
What does
$rootScope.$broadcast
do? -
What is the difference between
$rootScope.$broadcast
and$rootScope.$broadcast.apply
?
Answer
- What does
$rootScope.$broadcast
do?
$rootScope.$broadcast
is sending an event through the application scope. Any
children scope of that app can catch it using a simple: $scope.$on()
.
It is especially useful to send events when you want to reach a scope that is not a direct parent (A branch of a parent for example)
!!! One thing to not do however is to use $rootScope.$on
from a
controller. $rootScope
is the application, when your controller is destroyed
that event listener will still exist, and when your controller will be created
again, it will just pile up more event listeners. (So one broadcast will be
caught multiple times). Use $scope.$on()
instead, and the listeners will
also get destroyed.
- What is the difference between
$rootScope.$broadcast
&$rootScope.$broadcast.apply
?
Sometimes you have to use apply()
, especially when working with directives
and other JS libraries. However since I don't know that code base, I wouldn't
be able to tell if that's the case here.