Pratibha Pratibha - 6 months ago 183
AngularJS Question

Angular $rootScope.$broadcast() event caught twice in controller

Broadcating event on button click :-

$scope.onButtonClick = function(){
$rootScope.$broadcast('onButtonClick');
}


And catching event in another controller :-

$rootScope.$on('onButtonClick',function(event){
alert("catched");
console.log(event);
});


But it caught twice even though it fired only once. Why is that?

Answer

As it turned out the multiple controllers were instantiated due to ng-controller declaration in html and also as part of state setup for ui-router.

The solution is to remove on the the declaration.