2016-12-20 7 views
0

TypeScriptを使用しているNG2アプリケーションで作業しており、Amazon AWS SDKの呼び出しの周りにオブザーバブルを作成したいとします。残念ながら、thisはObservableにバインドされました。 thisを親クラスにバインドしたままにしておきたい場合は、どうすればよいですか?RxJS(TypeScript)5.0でObserverを作成すると、「this」にバインドされません。

+0

シンプル(私は思う)、矢印演算子を使用しないでください。昔ながらの匿名のjavascript関数を作成するだけです。次に、 'this'をある変数にバインドし、アクセスが必要な場合はその変数を使用します。 –

+0

@JeffMercadoはい、うまくいきましたが、私はハックに関与していないソリューションを期待していました。 Arrow関数は 'this 'の代理変数を作成した場合でも同様に動作します –

+0

なぜそれが「ハック」だと思いますか?矢印演算子は 'this'に束縛されるように設計されています。それはあなたが正反対の問題を解決します。 –

答えて

1

あなただけのobserver関数をラップし、それにあなたの外thisをバインドすることができます。

var foo = Observable.create((function(observer) { 
    this.s3.upload({ 
    Key: "value" 
    }, (err, data) => { 
    if (err) { 
     console.log(err); 
     return 
    } 
    observer.next(data) 
    }); 
}).bind(this)); 

これは、関数の意志の中に包まれた関数は、古典的な機能ではなく、矢印機能、またはthisであることを確認することが重要です最終的にはwindowとなります。

関連する問題