Vue: A vinculação do valor do formulário não está sendo atualizada com rapidez suficiente

Criado em 20 dez. 2016  ·  3Comentários  ·  Fonte: vuejs/vue

Digamos que eu tenha um componente simples com nada além de um método mounted que faz o seguinte:

this.myValue = 'a value'

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

Meu componente html se parece com isto:

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

Como você pode ver, estou usando o jQuery para enviar o formulário e, se a atribuição do valor e o envio do formulário acontecerem na mesma função, __empty data será enviada__. Posso contornar isso usando um tempo limite sem atraso, mas é claro que não é o ideal.

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

Isso também acontece quando não está no método montado, mas, por exemplo, on blur out , portanto, não tem nada a ver com o carregamento da página ou atrasos. O mesmo vale para :value versus v-model .

Não conheço muito o interior do Vue ou JS, mas presumo que seja porque ele ainda não foi capaz de atribuir os valores. Usando um tempo limite, o envio ocorre no próximo tick.

Comentários muito úteis

Use vm. $ NextTick

this.myValue = 'a value'

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

Todos 3 comentários

Achei que não havia como resolver o problema.

Nessa situação, escrevo manualmente o valor de param para ajax.

Este problema foi postado antes disso? Não foi possível encontrar nada.

Bem, no meu caso, eu só quero enviar o formulário automaticamente incluindo a atualização da página, não quero (e não posso) enviá-lo via Ajax. Se não houver solução, talvez seja bom ter uma menção na documentação?

Use vm. $ NextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})
Esta página foi útil?
0 / 5 - 0 avaliações