На данный вопрос уже ответили:
При загрузке Vue я вызываю метод suggestInit.
При создании слушателя suggestView-события select this === Vue.
При срабатывании события в коде this == null.
Сейчас я использую обращение к экземпляру Vue через объявленную переменную app, но хотелось бы использовать this.
Как передать в тело события this?
methods: function() {
suggestInit: function () {
// Создаем выпадающую панель с поисковыми подсказками
new ymaps.SuggestView('address', {results: 5}).events.add('select', function (e) {
app.device.address = e.get('item').value;
});
}
}
Вынесите функцию-обработчик в отдельную переменную и используйте bind
suggestInit: function () {
const handler = function (e) {
// this тут равен экземпляру компонента
app.device.address = e.get('item').value;
}
// Создаем выпадающую панель с поисковыми подсказками
new ymaps.SuggestView('address', {results: 5})
.events.add('select', handler.bind(this));
}
Либо стрелочную ф-цию
suggestInit: function () {
// тогда bind не нужен
const handler = e => {
// this тут равен экземпляру компонента
app.device.address = e.get('item').value;
}
// Создаем выпадающую панель с поисковыми подсказками
new ymaps.SuggestView('address', {results: 5})
.events.add('select', handler);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости