355 votes

Vue.js - Différence entre v-model et v-bind

Je suis en train d'apprendre Vue avec un cours en ligne et l'instructeur m'a donné un exercice pour faire une entrée de texte avec une valeur par défaut. Je l'ai réalisé en utilisant v-model mais, l'instructeur a choisi v-bind:value et je ne comprends pas pourquoi.

Quelqu'un peut-il me donner une explication simple sur la différence entre les deux et quand il est préférable d'utiliser chacun d'eux ?

11 votes

v-model est principalement utilisé pour la saisie et la soumission de formulaires. Utilisez-le donc lorsque vous avez affaire à différents types de saisie. v-bind La directive v-bind vous permet de produire une valeur dynamique en saisissant une expression JS qui, dans la plupart des cas, dépend des données du modèle de données. Pensez donc à v-bind comme à une directive que vous devez utiliser lorsque vous voulez traiter des éléments dynamiques.

6 votes

Dans certains cas, vous pouvez utiliser chacun d'entre eux. Parfois non, par exemple : <div v-bind:class="{ active: isActive }"></div> - vous ne pouvez pas lier l'attribut html en utilisant le modèle, vous devez utiliser v-bind de la directive. Pour les éléments de formulaire, vous voudrez utiliser la directive v-model qui "choisit automatiquement la manière correcte de mettre à jour l'élément en fonction du type d'entrée".

1 votes

Alexander La phrase "bind HTML attribute" m'a aidé à mieux réfléchir à cette question. Il serait bon de vous voir intervenir sur ce point avec une réponse plus complète sur ce qui se passe réellement avec ces deux constructions.

0voto

Nuh IPCsoft Points 1

J'ai lu la documentation de Vue 3 et j'ai suivi les étapes pour déclarer correctement les props et les emits, puis l'avertissement a disparu.

props:{
        modelValue: String
    },

emits:['update:modelValue'],

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X