@choupa
Архитектор (обычный, который строит)

Как внутри v-on = «...» получить глобальный контекст?

Вот примерно, что мне надо:

@click = "myVueMeth1(); myVueMeth2(); document.forms[0].submit()"


Но это не работает. Понимаю, что можно так:

onclick = "vm.myVueMeth1(); vm.myVueMeth2(); document.forms[0].submit()"

где vm — объект Vue

Но хочется чистоты стиля.
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега Vue.js
Сделайте отдельный метод:

@click="onClick"

methods: {
  onClick() {
    this.myVueMeth1();
    this.myVueMeth2();
    document.forms[0].submit();
  },
},

UPD. Конечно, вы можете определить computed свойство для document, типа так:

computed: {
  document() {
    return document;
  },
},

Тогда ваш первый пример заработает. Но это какое-то варварство, на мой взгляд.
Ответ написан
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Проще и правильнее все перенести в метод, но если сильно хочется, то нужно поменять контекст вызова:
@click = "function(){ myVueMeth1(); myVueMeth2(); document.forms[0].submit() }.bind(this)"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@evilray
Если вам нужен глобальный контекст в v-on, то вы не правильно готовите vue.

Если расскажите о задаче подробнее, можно будет подробнее ответить как правильно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы