JavaScript Kommunication zwischen verschachtelten Objekten

casbar

Cadet 4th Year
Registriert
Dez. 2004
Beiträge
115
Hallo,

Ich habe ein Objekt erzeugt, mit einem Button-Objekt der einen Eventlistener beinhaltet.

Code:
function winAddUser() {
 
    this.infoVar = '122';
 
    this.bExistingUser = Titanium.UI.createButton({
          height: 55,
          width: 130
    });
 
    this.bExistingUser.addEventListener("click", function(e) {
        // WIE FUNKTION ODER VARIABLE AUFRUFEN
    });
 
 
 
    this.changeUserType = function(type)
    {
        alert("AH");
    }
 
}

Im Eventlistener will ich zB die Funktion "changeUserType" oder die Variable "infoVar" aufrufen. In normalen Funktionen kann man zB mit
Code:
this.changeUserType()
auf andere Funktionen/Variablen zugreifen. Aber wie geht das in einem Listener Objekt?
Wenn das auch wichtig ist, ich benutze das Appcelerator Titanium Framework.

Danke!

casbar
 
du musst "this" an den Eventlistener binden. kenn mich zwar nicht mit Titanium als, aber bei Mootools ist eine Lösung das so zu machen:
Code:
this.bExistingUser.addEventListener("click", function(e) {
     this.changeUserType();
}.bind(this));
Vllt gibs ja so was ähnliches auch für Titanium.
 
Ja, genau so ähnlich ist das bei ExtJS auch. Bei Titanium scheint es sowas nicht zu geben komischerweise.
Aber trotzdem danke für die Antwort.

casbar
 
Es müßte aber auch funktionieren, vor dem addEventListener() ein 'var foo = this;' zu machen und dann im Callback mit foo statt this zu arbeiten.
 
PERFEKT !

Das war eine gute Idee, hat super geklappt, nur hab ich die Variable nicht "foo" genannt ! ;)
Vielen Dank,

casbar
 
Zurück
Oben