我对javascript / typescript很新。我有这个代码,我想在事件处理程序中调用一个类函数。问题是this
不是我的预期。
class MyClass {
private textInput: TextView;
private _presenter: DateOptionPresenter;
constructor(properties: { presenter: DateOptionPresenter } & CompositeProperties) {
super(properties);
this._presenter = properties.presenter;
this.createUI();
}
private createUI() {
this.append(
this.textInput = new TextView({
left: 5, right: 5, top: 5, bottom: 5
}).on({tap: this.showDateDialog})
);
}
private showDateDialog() {
let selectedDate = new Date();
new DateDialog({
date: selectedDate
}).on('select', (date) => this._presenter.fill(date))
.open();
}
}
所以,在最后一个函数showDateDialog()中,当我调用this
时,它在TextView上下文而不是MyClass中,并且this._presenter
未定义。
如何在那里访问_presenter?
答案 0 :(得分:0)
只是传递this.showDateDialog
将丢失函数绑定的上下文。您需要显式绑定上下文并返回该上下文,或者只是在另一个函数内调用它。
.on({tap: () => this.showDateDialog()})