Uso de $broadcast(), $emit() y $on() en AngularJS
Entiendo que $Broadcast()
se $Emit()
utilizan $On()
para generar un evento en un controlador y manejarlo en otro controlador. Si es posible, ¿puede alguien darme algún ejemplo en tiempo real sobre el uso de los tres anteriores, ya que soy nuevo angular JS
?
He revisado los siguientes enlaces y entiendo el uso básico.
http://www.binaryintellect.net/articles/5d8be0b6-e294-457e-82b0-ba7cc10cae0e.aspx
$emitir
Envía un nombre de evento hacia arriba a través de la jerarquía de alcance y notifica a los $rootScope.Scope
oyentes registrados. El ciclo de vida del evento comienza en el ámbito al que $emit
se llamó. El evento avanza hacia el ámbito raíz y llama a todos los oyentes registrados a lo largo del camino. El evento dejará de propagarse si uno de los oyentes lo cancela.
$transmitir
Envía un nombre de evento a todos los ámbitos secundarios (y a sus hijos) y lo notifica a los $rootScope.Scope
oyentes registrados. El ciclo de vida del evento comienza en el ámbito al que $broadcast
se llamó. Todos los oyentes del evento en este ámbito reciben una notificación. Luego, el evento desciende hacia los ámbitos secundarios y llama a todos los oyentes registrados en el camino. El evento no se puede cancelar.
$en
Escucha eventos de un tipo determinado. Puede captar el evento enviado por $broadcast
y $emit
.
Demostración visual:
Código de trabajo de demostración, que muestra visualmente el árbol de alcance (relación padre/hijo):
http://plnkr.co/edit/am6IDw?p=preview
Demuestra las llamadas al método:
$scope.$on('eventEmitedName', function(event, data) ...
$scope.broadcastEvent
$scope.emitEvent
- Transmisión: podemos pasar el valor de padre a hijo (es decir, padre -> controlador hijo).
- Emitir: podemos pasar el valor del hijo al padre (es decir, hijo -> controlador principal).
- Activado: captura el evento enviado por
$broadcast
o$emit
.