Новых в машинописи, пытаясь выяснить, почему это не работает:Машинопись Uncaught TypeError: это не функция при вызове функции из обработчика событий JQuery
У меня есть следующее определение класса:
class SliderRange {
updateSliderText(lowId: JQuery, highId: JQuery) {
//do some updates
}
constructor(public uiId: string, lowDisplay: JQuery, highDisplay: JQuery) {
//register the events that tie ui to the set methods here.
this.primaryUi().on("input", function() {
this.updateSliderText(lowDisplay, highDisplay);
});
this.secondaryUi().on("input", function() {
this.updateSliderText(lowDisplay, highDisplay);
});
}
private primaryUi() : JQuery {
return $(`.original#${this.uiId}`);
}
private secondaryUi(): JQuery {
return $(`.ghost#${this.uiId}`);
}
}
События запускаются правильно, но при их запуске браузер жалуется, что this.updateSliderText не является функцией. Если посмотреть в браузере, это не будет заменено на TypScript и вместо этого ссылается на объект JQuery (primaryUi или secondaryUi). Однако IntelliSense правильно переходит к правильной функции updateSliderText, что заставляет меня поверить, что она должна скомпилироваться в javascript, который правильно ссылается на эту функцию.
Как ссылаться на функцию, принадлежащую классу в обработчиках событий jquery?
спасибо.
Если вы не используете это, используйте updateSliderText (lowDisplay, highDisplay), что произошло? –
@TonyDong TS2304 Не удается найти имя 'updateSliderText' ошибка компиляции ts. – Kolichikov