Vue: La liaison de valeur de formulaire ne se met pas à jour assez rapidement

Créé le 20 déc. 2016  ·  3Commentaires  ·  Source: vuejs/vue

Disons que j'ai un composant simple avec rien d'autre qu'une méthode mounted qui fait ce qui suit :

this.myValue = 'a value'

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

Mon composant html ressemble à ceci :

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

Comme vous pouvez le voir, j'utilise jQuery pour soumettre le formulaire et si l'attribution de la valeur et la soumission du formulaire se produisent dans la même fonction, __des données vides sont soumises__. Je peux contourner ce problème en utilisant un délai d'attente sans délai, mais bien sûr, ce n'est pas idéal.

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

Cela se produit également lorsque ce n'est pas dans la méthode montée, mais par exemple on blur out , donc cela n'a rien à voir avec le chargement de la page ou les retards. Il en va de même pour :value contre v-model .

Je ne connais pas grand-chose des éléments internes de Vue ou de JS, mais je suppose que c'est parce qu'il n'a pas encore été en mesure d'attribuer les valeurs. En utilisant un délai d'attente, la soumission se produit au prochain tick.

Commentaire le plus utile

Utiliser vm.$nextTick

this.myValue = 'a value'

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

Tous les 3 commentaires

Je pensais qu'il n'y avait aucun moyen de résoudre le problème.

Dans cette situation, j'écris manuellement la valeur de param pour ajax.

Ce problème a-t-il déjà été posté ? Je n'ai rien trouvé.

Eh bien, dans mon cas, je veux juste soumettre le formulaire automatiquement, y compris l'actualisation de la page, je ne veux pas (et je ne peux pas) l'envoyer via Ajax. S'il n'y a pas de solution, peut-être qu'une mention dans la doc serait bien d'avoir ?

Utiliser vm.$nextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})
Cette page vous a été utile?
0 / 5 - 0 notes