2016-05-20 8 views
0
http:Http; 

constructor(http:Http){ 
this.http = http; 
} 

myFunction(){ 

//this.http works great here! 

     this.providerobject.getSomething(function(err, result) { 

     //this.http here is undefined! I need to use it here 

. 
. 
. 

Mit dem obigen Code ich gezeigt habe versucht, eine HTTP-Anforderung innerhalb der provider.getSomething Funktion zu machen, aber es scheint, das this.http Objekt hier nicht definiert ist! Wie kann ich einen http-Aufruf innerhalb dieser Funktion machen? Ich weiß, dass es etwas mit dem Bereich zu tun hat, da dieses Objekt außerhalb der provider.getSomething Funktion arbeitet. Ich weiß nicht, wie ich es weitergeben soll. Sag ich mache das:vorbei Objekt in Funktion innerhalb einer Funktion - Rahmen Ausgabe

Nun, das würde es in meine Provider-Funktion übergeben, aber nicht diese Funktion. Wie kann ich dieses Objekt in diesem Bereich verwenden?

+1

Mögliches Duplikat von [Wie kann man auf den korrekten \ this \ '/ Kontext innerhalb eines Callbacks zugreifen?] (Http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context -inside-a-callback) –

+0

Ich arbeite nicht mit Angular 2, aber in den meisten Fällen wie diese, die [Function.bind()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenz/Global_Objects/Function/bind) funktioniert gut. – Jhecht

Antwort

2

gibt es zwei Ansatz,

Sie diese in eine Variable speichern kann selbst sagen, und es verwenden,

let self = this; 

oder können Sie Fett Pfeil Syntax verwenden, die Pflege von this

let myFunction =()=>{ 
    // this will be preserved here, 
    this.providerobject.getSomething(this.http, function(err, result) 
} 
nimmt

Hoffe das hilft !!

+0

Danke für die Antwort! – user2924127

Verwandte Themen