Angularjs $ diffusé une fois, $ deux fois
Il envoie $diffusée une fois de la rootScope, mais l'auditeur ($) est appelée deux fois.
L'auditeur est dans un contrôleur, et il utilise $rootScope.$on
au lieu de $scope.$on
. Quelqu'un a eu ce problème?
modifier
rootScope:
$rootScope.$broadcast('menuActivateAction' + item.event_name_postfix, item.event_args);
autre Contrôleur:
$rootScope.$on('menuActivateActionPublish', function(event) {});
source d'informationauteur Shai M.
Vous devez vous connecter pour publier un commentaire.
Depuis l'inscription de votre $sur le port d'écoute sur $rootScope, qu'il ne soit pas détruit avec le contrôleur et la prochaine fois que vous initialisation du contrôleur, il est créé de nouveau.
Vous devez créer votre écoute sur le contrôleur de portée
Attention à éviter les deux instances du contrôleur signifie deux écouteurs d'événement, ce qui signifie que la méthode est exécutée deux fois !! ( exemple: à l'aide de deux fois 'ng-controller' )
Pour compléter que1326 réponse, comme un exemple, si vous utilisez l'interface utilisateur du routeur et avoir quelque chose comme
et dans yourPage.html vous avez un
ng-controller="YourController as Ctrl"
alors vous êtes à la création de 2 instances du contrôleur: 1 instance est créée par la configuration de l'état et un autre dans votre code html.La seule solution que j'ai pu obtenir pour fonctionner est de créer de l'auditeur à l'intérieur de l' $viewContentLoaded événement: