Vue: Привязка значения формы не обновляется достаточно быстро

Созданный на 20 дек. 2016  ·  3Комментарии  ·  Источник: vuejs/vue

Скажем, у меня есть простой компонент, в котором нет ничего, кроме метода mounted который выполняет следующие действия:

this.myValue = 'a value'

$(this.$el).parent('form').submit()

Мой компонент html выглядит так:

<form action="http://…">
    <input type="text" :value="myValue">
</form>

Как видите, я использую jQuery для отправки формы, и если и присвоение значения, и отправка формы происходят в одной и той же функции, отправляются __empty data__. Я могу обойти это, используя тайм-аут без задержки, но, конечно, это не идеально.

setTimeout(() => {
    $(this.$el).parent('form').submit()
})

Это также происходит, когда он не в смонтированном методе, а, например, on blur out , поэтому он не имеет ничего общего с загрузкой страницы или задержками. То же самое касается :value сравнению с v-model .

Я не очень разбираюсь во внутреннем устройстве Vue или JS, но предполагаю, что это потому, что он еще не смог присвоить значения. При использовании тайм-аута отправка происходит на следующем тике.

Самый полезный комментарий

Используйте vm. $ NextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})

Все 3 Комментарий

Думал, что нет способа решить проблему.

В этой ситуации я вручную записываю значение параметра для ajax.

Публикуется ли эта проблема раньше? Ничего не нашел.

Что ж, в моем случае я просто хочу отправить форму автоматически, включая обновление страницы, не хочу (и не могу) отправлять ее через Ajax. Если решения нет, возможно, было бы неплохо сделать упоминание в документации?

Используйте vm. $ NextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})
Была ли эта страница полезной?
0 / 5 - 0 рейтинги