我在从类中的onChange事件调用方法时遇到错误,没有定义this.filterEvents?无法弄明白为什么?
我试过用Datepicker.filterEvents或this.constructor.filterEvents和this.filterEvents()调用它 - 没有任何运气:( - 所以希望有人可以指出错误所在的正确方向?
代码在这里:
const daterangeConfig = {
mode: "range",
minDate: "today",
dateFormat: "j M",
weekNumbers: true,
locale: 'da',
onChange: function(selectedDates, dateStr) { //instance also param
//update filter label with selected dates
let filterBtn = document.querySelectorAll('[data-filterTrigger]');
let filterBtnIndex = 1;
let filterLabelTargetSpan = filterBtn[filterBtnIndex].nextElementSibling.querySelector('.btn--filter__labelb');
filterLabelTargetSpan.innerText = dateStr;
Datepicker.filterEvents(selectedDates);
}
};
class Datepicker {
constructor(container) {
// Run initializing code once the DOM is ready.
onReady(() => this.init(container));
// You can put other initializer-code here if it isn't dependent on the DOM in any way.
this.picker = new Flatpickr(this.dom.container, daterangeConfig);
}
init(container) {
this.dom = {
container
};
}
filterEvents(dates) {
console.log("filter events now");
}
}
答案 0 :(得分:0)
如果rep_ZARKGL
旨在作为静态方法,意味着其逻辑与filterEvents()
类相关但与任何实例无关,那么您可以将其设为静态方法,如下所示
DatePicker
并将其称为class DatePicker {
static filterEvents(dates) {
...
}
}
。
在您的代码中,您将DatePicker.filterEvents
定义为实例方法而不是静态方法,这使得filterEvents()
的实例可以访问它,但不能作为DatePicker
类的方法使用。如果您打算在DatePicker
中执行依赖于特定实例的逻辑,那么应该声明filterEvents()
,而不使用filterEvents()
关键字,并将其引用为{{ 1}}。重要的是要了解static
必须引用相关的this.filterEvents
实例。
另请参阅bind()方法,该方法可能有用,具体取决于所需的行为和代码结构。