Saltar al contenido

¿Por qué usamos $ rootScope. $ Broadcast en AngularJS?

Solución:

$rootScope básicamente funciona como un detector y despachador de eventos.

Para responder a la pregunta de cómo se usa, se usa junto con rootScope.$on;

$rootScope.$broadcast("hi");

$rootScope.$on("hi", function(){
    //do something
});

Sin embargo, es una mala práctica utilizar $rootScope como servicio general de eventos de su propia aplicación, ya que rápidamente terminará en una situación en la que cada aplicación depende de $ rootScope y no sabe qué componentes están escuchando qué eventos.

La mejor práctica es crear un servicio para cada evento personalizado que desee escuchar o transmitir.

.service("hiEventService",function($rootScope) {
    this.broadcast = function() {$rootScope.$broadcast("hi")}
    this.listen = function(callback) {$rootScope.$on("hi",callback)}
})

  1. Que hace $rootScope.$broadcast ¿hacer?

    $rootScope.$broadcast está enviando un evento a través del ámbito de la aplicación. Cualquier alcance de niños de esa aplicación puede detectarlo usando un simple: $scope.$on().

    Es especialmente útil enviar eventos cuando desea alcanzar un alcance que no es un padre directo (una rama de un padre, por ejemplo)

    !!! Una cosa para no hacer sin embargo es usar $rootScope.$on desde un controlador. $rootScope es la aplicación, cuando su controlador sea destruido, ese oyente de eventos seguirá existiendo, y cuando su controlador se cree nuevamente, simplemente acumulará más oyentes de eventos. (Por lo tanto, una transmisión se captará varias veces). Usar $scope.$on() en su lugar, los oyentes también serán destruidos.

  2. Cuál es la diferencia entre $rootScope.$broadcast Y $rootScope.$broadcast.apply?

    A veces tienes que usar apply(), especialmente cuando se trabaja con directivas y otras bibliotecas JS. Sin embargo, dado que no conozco esa base de código, no podría decir si ese es el caso aquí.

$ rootScope. $ broadcast es una forma conveniente de generar un evento “global” que todos los ámbitos secundarios pueden escuchar. Solo necesitas usar $rootScope para difundir el mensaje, ya que todos los ámbitos descendientes pueden escucharlo.

El alcance raíz transmite el evento:

$rootScope.$broadcast("myEvent");

Cualquier niño Scope puede escuchar el evento:

$scope.$on("myEvent",function () {console.log('my event occurred');} );

¿Por qué usamos $ rootScope. $ Broadcast? Puedes usar $watch para escuchar cambios de variable y ejecutar funciones cuando cambia el estado de la variable. Sin embargo, en algunos casos, simplemente desea generar un evento que otras partes de la aplicación puedan escuchar, independientemente de cualquier cambio en el estado de la variable de alcance. Esto es cuando $broadcast es útil.

¡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 *