我正在使用AngularJS和Typescript。我试图解决的问题如下:
我想调用getLoans()
方法来显示每个标签(货币)中的贷款清单。在类中,我有一个包含所有贷款的数组,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;
}
}
上述代码无效,因为filterBySelectedCurrency(..)
方法this.selectedCurrency
为undefined
。但是,在调用代码之前调试代码(在getLoans()
方法中),this.selectedCurrency
具有正确的值。
显然由于某些原因,我无法从过滤器方法中访问类变量this.selectedCurrency
。是这种情况吗?
提前致谢!
答案 0 :(得分:2)
直接传递函数会导致上下文 - this
- 丢失。您可以通过传入箭头函数来维护上下文。
改变这个:
return this.loans.filter(this.filterBySelectedCurrency);
对此:
return this.loans.filter((loan) => this.filterBySelectedCurrency(loan));