javascript - w3schools - angularjs $< emit
Angularjs $ emitido una vez, $ en dos veces (4)
Envía $ broadcast una vez desde rootScope, pero se llama dos veces al oyente ($ on).
El oyente está en un controlador y usa $rootScope.$on
lugar de $scope.$on
$rootScope.$on
. ¿Alguien ha tenido este problema?
editar
rootScope:
$rootScope.$broadcast(''menuActivateAction'' + item.event_name_postfix, item.event_args);
otro controlador:
$rootScope.$on(''menuActivateActionPublish'', function(event) {});
La única solución que pude poner a trabajar fue crear el oyente dentro del evento $ viewContentLoaded:
$scope.$on(''$viewContentLoaded'', function() {
//Put your listener(s) in here
$scope.$on(''menuActivateActionPublish'', function(event) {});
});
Para complementar la respuesta que1326, por ejemplo, si está utilizando ui-router y tiene algo como
.state(''app.yourpage'', {
url:''yourPage'',
views: {
''content@'': {
templateUrl : ''views/yourPage.html'',
controller : ''YourController''
}
}
})
y en yourPage.html tiene un ng-controller="YourController as Ctrl"
, entonces está creando 2 instancias del controlador: 1 configuración creada por el estado y otra en su html.
Tenga cuidado de evitar dos instancias del controlador: dos escuchas de eventos, lo que significa que el método se ejecuta dos veces. (Ejemplo: usando dos veces ''ng-controller'')
Ya que registra su $ en escucha en $ rootScope, no se destruye con el controlador y la próxima vez que inicie el controlador se creará de nuevo.
Debe crear su oyente en el alcance del controlador
$scope.$on(''menuActivateActionPublish'', function(event) {});