Angularjs Broadcast Once, Broadcastonce,on Twice


Answer :

Since you register your onlisteneronon listener on 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", then you are creating 2 instances of the controller: 1 instance is created by the state configuration and another one in your html.


Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?