2016-06-09 22 views
31

için $ broadcast() ve $ on() öğesinin kullanımı $Broadcast(), $Emit() Ve $On() öğelerinin bir denetleyicide bir olay ortaya çıkarmak ve başka bir denetleyicide işlem yapmak için kullanıldığını anlıyorum. Mümkünse, birisi bana yukarıdaki üçte birinin kullanımıyla ilgili gerçek zamanlı bir örnek verebilir mi? angular JS?AngularJS

Aşağıdaki bağlantılardan geçtim ve temel kullanımı anladım.

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

+0

Bağlantısının olası kopyası [$ rootScope. $ Broadcast vs. $ scope. $ Emit] (http: // stackoverflow.com/questions/26752030/rootscope-broadcast-vs-scope-emit) – sheelpriy

+0

Merhaba. Evet haklısın. Ancak, sadece bunların kullanımıyla ilgili gerçek zaman örneğini bilmek istedim. –

cevap

62

$

Bu kapsam hiyerarşisi içinden yukarı doğru bir etkinlik adını gönderir yayarlar ve tescil $rootScope.Scope dinleyiciye bildirmek. Etkinlik yaşam döngüsü, $emit'un çağrıldığı kapsamda başlar. Olay, kök kapsamına doğru yukarı doğru katlanır ve yol boyunca kayıtlı tüm dinleyicileri çağırır. Dinleyicilerden biri onu iptal ederse olay yayılmayı durduracaktır. Tüm çocuk kapsamları (ve çocukları) için aşağı doğru bir etkinlik adını gönderir ve tescil $rootScope.Scope dinleyiciye bildirmek

yayın

$. Etkinlik yaşam döngüsü, $broadcast'un çağrıldığı kapsamda başlar. Bu kapsamdaki etkinlik için tüm dinleyiciler haberdar edilir. Daha sonra, olay çocuk kapsamlarına doğru aşağı doğru hareket eder ve yol boyunca kayıtlı tüm dinleyicileri çağırır. Etkinlik iptal edilemez.

$

üzerine O belirli bir türden olaylara dinle. $broadcast ve $emit tarafından gönderilen olayı yakalayabilir.


Görsel demo : yöntem aramaları
http://plnkr.co/edit/am6IDw?p=preview

edebilmeyi:

Demo çalışan kod, görsel gösteren kapsam ağacı (üst/alt ilişkisi)

$scope.$on('eventEmitedName', function(event, data) ... 
    $scope.broadcastEvent 
    $scope.emitEvent 
+0

Cevabınız için teşekkür ederiz. $ rootScope. $ broadcast hemen hemen her şeyin duymasını sağlayan bir yöntemdir. $ kapsamı. $ yayını $ kapsamının kendisi ve çocukları içindir. Burada hem yayın olayları tüm çocuk $ kapsamları tarafından dinlenecek mi? Onların arasındaki fark ne? –

9

Bu küçük örnek, $rootScope, başka bir denetleyicide bir çocuk kapsamı tarafından dinlenecek bir olay yayar.

(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

@gayathri alt cevabı teknik tüm bu kapsam açısal konseptinde yöntem ve bunların uygulamaları $scope ve $rootScope farklılıkları açıklar.

6
Broadcast: We can pass the value from parent to child 
     i.e parent -> child controller. 
Emit: we can pass the value from child to parent 
     i.e.child ->parent controller. 
On: catch the event dispatched by $broadcast or $emit.