addEventListener из одного метода не видит другой метод этого же класса
Всем привет! Не могу понять, почему addEventListener из одного метода класса не видит другой метод этого же класса. Получаю ошибку Uncaught TypeError: this.movePath is not a function. Из других методов метод movePath(path) доступен. Код такой
movePath(path) {
console.log(path)
}
addEventListeners() {
const command = [].slice.call(document.querySelectorAll('.file'))
command.forEach(function(command) {
command.addEventListener('dblclick', function(e) {
this.movePath(e.target.dataset.name);
}, false)
})
}
self.movePath(e.target.dataset.name);
тоже не работает
Ответы (2 шт):
Автор решения: Asadbek Raimov
→ Ссылка
Это зависит от того, как вы используете этот класс. Поэтому вы должны использовать
static movePath(){
console.log('Some text')
}
Автор решения: Volloff
→ Ссылка
Вот таким образом решается проблема потери контекста.
addEventListeners() {
let that = this;// тут
const command = [].slice.call(document.querySelectorAll('.file'))
command.forEach(function(command) {
command.addEventListener('dblclick', function(e) {
that.movePath(e.target.dataset.name);
})
})
}
Вроде как есть еще варианты решения с call или aply но я решил воспользоваться этим способом