angularjs - react - rootscope emit not working




Uso de $ broadcast(), $ emit() e $ on() no AngularJS (3)

Este é um post de amostra para eventos agulares com um bom exemplo. Se você quiser, pode passar por lata. Espero que você possa esclarecer sobre esses eventos angulares mais do que o esperado. Aqui está o link http://www.riaxe.com/blog/understanding-angulars-scope-and-rootscope-event-system-emit-broadcast-and-on/

Eu entendo que $Broadcast() , $Emit() e $On() são usados ​​para criar um evento em um controlador e manipular em outro controlador. Se possível, alguém pode me dar algum exemplo em tempo real sobre o uso de acima de três, como eu sou novo para angular JS ?

Eu passei pelos links a seguir e entendi o uso básico.

http://www.binaryintellect.net/articles/5d8be0b6-e294-457e-82b0-ba7cc10cae0e.aspx


Este pequeno exemplo mostra como o $rootScope emite um evento que será escutado por um escopo filho em outro controlador.

(function(){


angular
  .module('ExampleApp',[]);

angular
  .module('ExampleApp')
  .controller('ExampleController1', Controller1);

Controller1.$inject = ['$rootScope'];

function Controller1($rootScope) {
  var vm = this, 
      message = 'Hi my children scope boy';

  vm.sayHi = sayHi;

  function sayHi(){
    $rootScope.$broadcast('greeting', message);
  }

}

angular
  .module('ExampleApp')
  .controller('ExampleController2', Controller2);

Controller2.$inject = ['$scope'];

function Controller2($scope) {
  var vm = this;

  $scope.$on('greeting', listenGreeting)

  function listenGreeting($event, message){
    alert(['Message received',message].join(' : '));
  }

}


})();

http://codepen.io/gpincheiraa/pen/xOZwqa

A resposta do @gayathri bottom explica tecnicamente as diferenças de todos esses métodos no conceito angular do escopo e suas implementações $scope e $rootScope .


  • Transmissão: Podemos passar o valor de pai para filho (isto é, pai -> controlador filho).
  • Emit: podemos passar o valor de filho para pai (iechild -> controlador pai.)
  • Ligado: captura o evento enviado por $broadcast ou $emit .






angularjs