Как в vue предать this в event [дубликат]

141
29 октября 2018, 16:30

На данный вопрос уже ответили:

  • Потеря контекста вызова 5 ответов

При загрузке 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;
        });
    }
}
Answer 1

Вынесите функцию-обработчик в отдельную переменную и используйте 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);
    }
READ ALSO
Постепенная подгрузка гиф изображения

Постепенная подгрузка гиф изображения

Как сделать так, чтобы gif-файл сначала был статичным, после того как гиф загрузилась, включается воспроизведение само по себе?

167
Как делают авторизацию через json?

Как делают авторизацию через json?

Есть задача сделать авторизацию на сайте через json, суть в том, что сервер отдает строку json при запросе, после введения данных в формуВ строке...

176
Всплытие событий

Всплытие событий

Несколько месяцев назад писал свою первую навигацию по страницеСейчас столкнулся с той же задачей и решил немного усовершенствовать код,...

160