Angularjs Broadcast Once, Broadcastonce,on Twice
Answer : Since you register your o n l i s t e n e r o n on listener on o n l i s t e n ero n rootScope, it doesn't get destroyed with the controller and next time you init the controller it gets created again. You should create your listener on controller scope $scope.$on('menuActivateActionPublish', function(event) {}); Be careful you avoid two instances of the controller means two event listeners, which means the method gets executed twice !! ( example: using twice 'ng-controller' ) To complement que1326 answer, as an example, if you are using ui-router and have something like .state('app.yourpage', { url:'yourPage', views: { 'content@': { templateUrl : 'views/yourPage.html', controller : 'YourController' } } }) and in yourPage.html you have a ng-controller="YourController as Ctrl" , th...