SORU
24 Ocak 2013, PERŞEMBE


Çalışma kapsamında$.$yayarlar ve .$üzerinde

Nasıl bir .$emit .$on yöntemleri kullanarak bir kumanda $scope benim nesne gönderebilir miyim?

function firstCtrl($scope)
{
    $scope.$emit('someEvent', [1,2,3]);
}

function secondCtrl($scope)
{
    $scope.$on('someEvent', function(mass) { console.log(mass); });
}

Bence bu iş böyle yürümez. Nasıl $emit $on çalışır?

CEVAP
24 Ocak 2013, PERŞEMBE


Her şeyden önce, ebeveyn-çocuk ilişkisi kapsamı önemli. Bazı olay yaymak için iki seçenek var:

  • $broadcast -- olay kapsamları her çocuk için aşağıya gönderir
  • $emit -- etkinlik kapsamında hiyerarşisinde yukarı doğru gönderir.

Senin denetleyicileri (scopes) ilişkisi hakkında bir şey bilmiyorum, ama birkaç seçenek vardır:

  1. Eğer secondCtrl kapsamı, kod firstCtrl ebeveyn kapsamında olursa değiştirerek işe firstCtrl 15 *$emit:

    function firstCtrl($scope)
    {
        $scope.$broadcast('someEvent', [1,2,3]);
    }
    
    function secondCtrl($scope)
    {
        $scope.$on('someEvent', function(event, mass) { console.log(mass); });
    }
    
  2. Kendi arasında alt-üst ilişkisi yok diye kapsamları kumandaya $rootScope enjekte ve olay yayınlayabilir tüm alt kapsamları (yani aynı zamanda 19**).

    function firstCtrl($rootScope)
    {
        $rootScope.$broadcast('someEvent', [1,2,3]);
    }
    
  3. Çocuk kumanda olayını göndermek için ihtiyacınız olduğunda nihayet, kapsamları Yukarı $scope.$emit kullanabilirsiniz. firstCtrl eğer kapsam secondCtrl kapsamında üst:

    function firstCtrl($scope)
    {
        $scope.$on('someEvent', function(event, data) { console.log(data); });
    }
    
    function secondCtrl($scope)
    {
        $scope.$emit('someEvent', [1,2,3]);
    }
    

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012
  • Vsauce

    Vsauce

    30 Temmuz 2007