SORU
15 ŞUBAT 2013, Cuma


Nasıl angularJS yayın bir olay üyeliğinizi iptal etmek için. Nasıl Kaldır üzerine kayıtlı) $fonksiyonu

Yayın olayı kullanarak bir dolar için dinleyici işlevi dolarımı kayıtlı

$scope.$on("onViewUpdated", this.callMe);

ve un-kayıt bu dinleyici belirli bir iş kuralına göre yapmak istiyorum. Ama benim sorunum bir kez BM-kayıt yapamam kayıtlı olmasıdır.

BM-kayıt AngularJS herhangi bir yöntem, belirli bir dinleyicisi var mı? Bir yöntem gibi $un-kayıt bu olay, $kapalı olabilir. İş mantığa göre öyle diyebilirim

 $scope.$off("onViewUpdated", this.callMe);

ve bu işlev birisi "" olay. onViewUpdated yayın çağrıldığını dur

Teşekkürler

EDİT: De-kayıt için başka bir işlevi dinleyici istiyorum. Ben kayıt fonksiyonu.

CEVAP
15 ŞUBAT 2013, Cuma


Bu kaynak kod :) bulundu en azından 1.0.4. Sadece kısa olduğu için tam kodu göndeririz

/**
  * @param {string} name Event name to listen on.
  * @param {function(event)} listener Function to call when the event is emitted.
  * @returns {function()} Returns a deregistration function for this listener.
  */
$on: function(name, listener) {
    var namedListeners = this.$$listeners[name];
    if (!namedListeners) {
      this.$$listeners[name] = namedListeners = [];
    }
    namedListeners.push(listener);

    return function() {
      namedListeners[indexOf(namedListeners, listener)] = null;
    };
},

Senin durumunda iade işlevi hatırlamamız gerekiyor

var offCallMeFn = $scope.$on("onViewUpdated", callMe);

//this will deregister that listener
offCallMeFn();

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Carlos Delgado

    Carlos Delga

    21 HAZİRAN 2011
  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • Dopelives

    Dopelives

    30 Temmuz 2009