К сожалению, не могу продемонстрировать код в работе, так как здесь осуществляется работа с сервером с помощью ajax. Упрощенный пример.
Данный вариант работает:
$('.form').submit(function() {
var data = { /*...*/ };
// Сработает в случае успеха
var done = () => console.log(this); // <form></form>
$.post(vus.ajaxurl, data, done);
return false;
});
А этот вариант не работает:
// Сработает в случае успеха
var done = () => console.log(this); // undefined
$('.form').submit(function() {
var data = { /*...*/ };
$.post(vus.ajaxurl, data, done.bind(this));
return false;
});
Я не могу понять, почему? Я же создаю новую функцию, с помощью bind и привязываю контекст.
Почему это не работает?
Проблема заключается в том, что стрелочные функции не имеют контекста this.
Если переписать объявление функции done следующим образом, то должно заработать.
var done = function(arg) {
...
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости