2016-05-20 21 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 

. 
. 
. 

I上記のコードでは、provider.getSomething機能の内部httpリクエストをしようとしていますが、this.httpオブジェクトは、ここで定義されていないようです!この関数の内部でhttp呼び出しを行うにはどうすればよいですか?このオブジェクトはprovider.getSomething機能の外で動作するので、スコープとは何か関係があります。私はそれを渡す方法を知らない。- スコープの問題

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

これはプロバイダ機能に渡しますが、この機能には渡されません。どのように私はこのスコープでこのオブジェクトを使用できますか?

あなたには、いくつかの変数にこれを保存することができる

+1

[コールバック内の正しい\ 'this \' /コンテキストにアクセスするにはどうすればいいですか?](http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context -inside-a-callback) –

+0

私はAngular 2では動作しませんが、ほとんどの場合、[Function.bind()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)はうまくいきます。 – Jhecht

答えて

2

2つのアプローチがあるが、自己を言うと、それを使用し、

let self = this; 

か、this

let myFunction =()=>{ 
    // this will be preserved here, 
    this.providerobject.getSomething(this.http, function(err, result) 
} 
の世話をする脂肪矢印構文を使用することができます

これが役立つことを願っています!

+0

答えをありがとう! – user2924127