2016-06-27 5 views
1

私はAngularJSとTypescriptを使用しています。私が解決しようとしている問題は、次のとおりです。フィルターメソッドでクラス変数を使用

  • Typescriptコントローラクラスでは、私はローンの配列を持っていて、各ローンは通貨オブジェクトを持っています。
  • UIには、通貨ごとに1つのタブがあります。

getLoans()メソッドを呼び出して、各タブ(通貨)内にローンリストを表示したいと考えています。クラスでは、選択したタブ(選択された通貨)に基づいて配列され、フィルタリングされたローンを返す、すべてのローンと配列を持つ配列があります。以下

コードである:

class MyClass { 
    public selectedCurrency: app.models.Currency; 
    private loans: app.models.Loan[]; 

    getLoans(): app.models.Loan[] { 
     if (this.loans) { 
      return this.loans.filter(this.filterBySelectedCurrency); 
     } 
     return null; 
    } 

    filterBySelectedCurrency(loan: app.models.Loan): boolean { 
     return loan && this.selectedCurrency && loan.Currency == this.selectedCurrency; 
    } 
} 

上記のコードが原因this.selectedCurrencyundefinedあるfilterBySelectedCurrency(..)方法で動作していません。しかし、それを呼び出す前に(getLoans()メソッド内で)コードをデバッグすると、this.selectedCurrencyは正しい値を持っています。

明らかに何らかの理由で、フィルタメソッド内からクラス変数this.selectedCurrencyにアクセスできません。これは本当ですか?

ありがとうございます!

答えて

2

関数に直接渡すと、コンテキスト-が失われます。代わりに矢印関数を渡すことでコンテキストを維持することができます。これに

return this.loans.filter(this.filterBySelectedCurrency); 

:この

変更勤務

return this.loans.filter((loan) => this.filterBySelectedCurrency(loan)); 
+0

!ありがとう!! – gmesorio

関連する問題