NEWS
Verständnisfrage Klassen und on()
-
Hallo,
ich komme grad nicht weiter. Ich will meine lose Script-Sammlung mal aufräumen und alles sauber in Klassen packen. Dabei wollte ich einen Schalter abstrahieren:
class Switch{ private nodeState:string; public get State():boolean { return getState(this.nodeState).val; } constructor(address:string) { this.nodeState = address + ".state"; on(this.nodeState, this.OnStateChanged); } private OnStateChanged():void { log(this.nodeState + ": " + this.State); } }
Das OnStateChanged ist wie man sieht erstmal nur ein log zum Testen. Alles was ich ausgegeben bekomme ist "undefined: undefined", sprich nodeState ist nicht gesetzt, obwohl vorher zugewiesen.
Wenn ich außerhalb der Klasse sowas mache, funktioniert es:
var sw:Switch= new Switch('zigbee....df1a'); on('zigbee....df1a.state', OnStateChanged) function OnStateChanged() { log("# " + sw.State); }
Kann mir jemand erklären, warum?
-
hi
probiers mal mit.... on(this.nodeState, this.OnStateChanged.bind(this)); .....
gruß
-
Vielen Dank, hat funktioniert.
Gibt es irgendwo eine Erklärung dazu ... ich verstehe Sachen gern. So würde ich mir zusammenreimen, daß on() ohne bind irgendwie den Kontext nicht kennt, und so keine Zugriff auf Klassen-member hat.