J'apprends Vue avec un cours en ligne et l'instructeur m'a donné un exercice pour faire un texte d'entrée avec une valeur par défaut. Je l'ai terminé 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 ces deux et quand il vaut mieux les utiliser chacun?
javascript
mvvm
frameworks
vue.js
frontend
Gustavo Dias
la source
la source
v-model
est principalement utilisé pour les enchères de saisie et de formulaire, utilisez-le donc lorsque vous traitez avec différents types de saisie.v-bind
La directive vous permet de produire une valeur dynamique en tapant 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 directive que vous devez utiliser lorsque vous voulez traiter des choses dynamiques.<div v-bind:class="{ active: isActive }"></div>
- vous ne pouvez pas lier un attribut html à l'aide d'un modèle, vous devez utiliser unev-bind
directive. Pour les éléments du formulaire, vous voudrez utiliser lav-model
directive - "il choisit automatiquement la bonne façon de mettre à jour l'élément en fonction du type d'entrée."data
etprops
...Réponses:
D' ici - N'oubliez pas:
est essentiellement le même que:
ou (syntaxe abrégée):
Il en
v-model
va de même pour une liaison bidirectionnelle pour les entrées de formulaire . Il combinev-bind
, ce qui apporte une valeur js dans le balisage, etv-on:input
pour mettre à jour la valeur js .Utilisez
v-model
quand vous le pouvez. Utilisezv-bind
/v-on
quand vous devez :-) J'espère que votre réponse a été acceptée.v-model
fonctionne avec tous les types d'entrée HTML de base (texte, zone de texte, nombre, radio, case à cocher, sélectionnez). Vous pouvez utiliserv-model
avecinput type=date
si votre modèle stocke les dates sous forme de chaînes ISO (aaaa-mm-jj). Si vous souhaitez utiliser des objets de date dans votre modèle (une bonne idée dès que vous allez les manipuler ou les formater), faites-le .v-model
a quelques astuces supplémentaires dont il est bon d'être conscient. Si vous utilisez un IME (beaucoup de claviers mobiles ou chinois / japonais / coréen), le v-model ne sera pas mis à jour tant qu'un mot n'est pas terminé (un espace est entré ou l'utilisateur quitte le champ).v-input
se déclenchera beaucoup plus fréquemment.v-model
a également des modificateurs.lazy
,.trim
,.number
, couvert dans la doc .la source
v-model
etv-bind:xxx.sync
?En mots simples
v-model
est de deux voies fixations signifie: si vous modifiez la valeur d' entrée, les données liées sera modifiée et vice - versa .mais
v-bind:value
est appelé liaison unidirectionnelle, ce qui signifie: vous pouvez modifier la valeur d'entrée en modifiant les données liées, mais vous ne pouvez pas modifier les données liées en modifiant la valeur d'entrée via l'élément .consultez cet exemple simple: https://jsfiddle.net/gs0kphvc/
la source
this.data_source = 'Some new value'
data_source
, vous voulez dire le HTML injecté dans DOM à partirinput
, non?v-model
c'est une liaison de données bidirectionnelle, il est utilisé pour lier l'élément d'entrée html lorsque vous modifiez la valeur d'entrée, puis les données limitées seront modifiées.
v-model est utilisé uniquement pour les éléments d'entrée HTML
v-bind
est une liaison de données à sens unique, ce qui signifie que vous ne pouvez lier des données qu'à l'élément d'entrée mais ne pouvez pas modifier les données bornées en modifiant l'élément d'entrée. v-bind est utilisé pour lier l'attribut html
ex:
<input type="text" v-bind:class="abc" v-bind:value="">
la source
J'espère que cela vous aidera à comprendre les bases
la source
Il y a des cas où vous ne voulez pas utiliser
v-model
. Si vous avez deux entrées et que chacune dépend l'une de l'autre, vous pourriez avoir des problèmes référentiels circulaires. Les cas d'utilisation courants sont si vous créez une calculatrice comptable.Dans ces cas, ce n'est pas une bonne idée d'utiliser des observateurs ou des propriétés calculées.
Au lieu de cela, prenez votre
v-model
et divisez-le comme indiqué ci-dessusEn pratique, si vous découplez votre logique de cette façon, vous appellerez probablement une méthode.
Voici à quoi cela ressemblerait dans un scénario réel:
la source