Vue: El enlace de valor de formulario no se actualiza lo suficientemente rápido

Creado en 20 dic. 2016  ·  3Comentarios  ·  Fuente: vuejs/vue

Digamos que tengo un componente simple con nada más que un método mounted que hace lo siguiente:

this.myValue = 'a value'

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

Mi componente html se ve así:

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

Como puede ver, estoy usando jQuery para enviar el formulario y si tanto la asignación del valor como el envío del formulario ocurren en la misma función, se envían __ datos vacíos__. Puedo solucionar este problema utilizando un tiempo de espera sin demora, pero, por supuesto, eso no es lo ideal.

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

Esto también sucede cuando no está en el método montado, pero por ejemplo on blur out , por lo que no tiene nada que ver con la carga de la página o los retrasos. Lo mismo ocurre con :value versus v-model .

No conozco mucho sobre los aspectos internos de Vue o JS, pero supongo que es porque aún no ha podido asignar los valores. Usando un tiempo de espera, el envío ocurre en el siguiente tick.

Comentario más útil

Utilice vm. $ NextTick

this.myValue = 'a value'

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

Todos 3 comentarios

Pensé que no había forma de resolver el problema.

En esta situación, escribo manualmente el valor de param para ajax.

¿Se ha publicado este problema antes de esa fecha? No pude encontrar nada.

Bueno, en mi caso, solo quiero enviar el formulario automáticamente, incluida la actualización de la página, no quiero (y no puedo) enviarlo a través de Ajax. Si no hay una solución, ¿quizás sería bueno tener una mención en los documentos?

Utilice vm. $ NextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})
¿Fue útil esta página
0 / 5 - 0 calificaciones