2012-04-12 13 views
0

Ich versuche Dojo Pub/Sub-Thema Modul wie dokumentiert here zu verwenden. Ich abonniere ein Ereignis innerhalb der benutzerdefinierten Methode startup() und möchte das Widget ändern, wenn das Thema ausgelöst wird.Zugriff auf das Widget aus dem Rückruf von topicSubscribe

Wie greife ich auf das Widget vom topic.subscribe() Rückruf zurück? Innerhalb des Rückrufs bezieht sich this nicht auf das Widget; Ich bin mir nicht sicher, worauf es sich bezieht ... das this Objekt enthält emit und on Funktionen, sowie ein declaredClass Feld, das wie "uniqName_0" aussieht.

Antwort

1

Die w idget hat einige Komfort-Methoden, die die Kupplung wie phusick beschreibt.

Im Startup-Methode können Sie

startup: function() { 
    this.inherited(arguments); 

    this.subscribe('topic/some', '_onTopic'); 
}, 

_onTopic: function() { 
    this.something // 'this' is the widget 
} 

Ein Widget hat andere Convenience-Methoden

this.unsubscribe 
this.connect 
this.disconnect 

schreiben, wenn die subscribe und connect Methoden verwenden, werden die unsubscribe und disconnect Methoden automatisch aufgerufen werden, wenn Das Widget ist zerstört.

http://dojotoolkit.org/api/dijit/_WidgetBase

1

Sie wollen dojo/_base/lang::hitch verwenden, um den Umfang der Rückruffunktion zu ändern, wenn in der Widget-Methode abonnieren möchte, wo this auf die Widgets Instanz bezieht. Sie haben ein paar Optionen hier:

  1. anonyme Funktion:

    topic.subscribe("topic/some", lang.hitch(this, function() { 
        // your callback logic here 
    })); 
    
  2. die Methode der widget:

    topic.subscribe("topic/some", lang.hitch(this, "callbackMethod")); 
    

Sehen sie in Aktion: http://jsfiddle.net/phusick/N7NGB/

Verwandte Themen