Saltar al contenido

$rootScope.$broadcast frente a $scope.$emit

Te doy la bienvenida a nuestro sitio web, en este sitio vas a hallar la resolución de lo que andabas buscando.

Solución:

tl; dr(este tl; dr es de la respuesta de @ sp00m a continuación)

$emit despacha un evento hacia arriba… $broadcast envía un evento hacia abajo

Explicación detallada

$rootScope.$emit solo deja que otros $rootScope los oyentes lo captan. Esto es bueno cuando no quieres cada $scope para conseguirlo. Sobre todo una comunicación de alto nivel. Piense en ello como adultos hablando entre sí en una habitación para que los niños no puedan escucharlos.

$rootScope.$broadcast es un método que permite que casi todo lo escuche. Esto sería el equivalente a que los padres griten que la cena está lista para que todos en la casa la escuchen.

$scope.$emit es cuando quieres eso $scope y todos sus padres y $rootScope para escuchar el evento. Este es un niño lloriqueando a sus padres en casa (pero no en una tienda de comestibles donde otros niños pueden escuchar).

$scope.$broadcast es para el $scope mismo y sus hijos. Este es un niño susurrando a sus animales de peluche para que sus padres no puedan escuchar.

No están haciendo el mismo trabajo: $emit envía un evento hacia arriba a través de la jerarquía de alcance, mientras que $broadcast envía un evento hacia abajo a todos los ámbitos secundarios.

Hice el siguiente gráfico a partir del siguiente enlace: https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

Scope, rootScope, emit, broadcast

Como puedes ver, $rootScope.$broadcast llega a muchos más oyentes que $scope.$emit.

También, $scope.$emitEl efecto burbujeante se puede cancelar, mientras que $rootScope.$broadcast no poder.

Comentarios y calificaciones

Te invitamos a defender nuestra faena añadiendo un comentario o dejando una valoración te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *