2016-08-17 6 views
1

Ich habe Schwierigkeiten, Funktionen in meinem Polymerelement aufzurufen. Ich weiß, dass Sie this.functionName(); verwenden müssen, und es funktioniert.Aufruf von Funktionen innerhalb des Elements "Polymer"

aber wenn ich es in einem setTimeout wie folgt war: runSoon = setTimeout(this.runNow(), 12000); es läuft ohne zu warten. Wenn ich es so schreibe: runSoon = setTimeout(function(){this.runNow()}, 12000); gibt es mir eine Fehlermeldung: Uncaught TypeError: this.runNow is not a function.

Auch wenn ich this.functionName in einem Firebase verwende es funktioniert, aber in "forEach", wie in diesem Beispiel gibt es meint, dass Fehler Uncaught TypeError: this.myFunction is not a function:

ref.once('value', function(snapshot) { 
    snapshot.forEach(function(child) { 
    this.myFunction(); 
    }); 
}); 

Dank

Antwort

5

Es soll sein, ohne ()

runSoon = setTimeout(this.runNow, 12000); 

diese Weise können Sie eine referenc an die Funktion übergeben this.runNow

runSoon = setTimeout(this.runNow(), 12000); 

übergibt das Ergebnis der this.runNow()-setTimeout(...)

+0

yep. das funktioniert. aber jetzt versuche ich eine andere Funktion von runNow aufzurufen, this.nextStep(); , gibt es mir diese Fehlermeldung: 'Uncaught TypeError: this.nextStep ist keine Funktion'. Außerdem sollte die zweite Art, wie ich es gemacht habe, funktionieren. –

+4

versuchen Sie 'this.runNow.bind (this)' anstatt nur 'this.runNow' –

+0

wow. Ich muss mehr über .bind lernen –

Verwandte Themen