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.
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()
})
Comentários muito úteis
Use vm. $ NextTick