Partager
L'explication sur v-model
sur le tutoriel du site officiel de Vue n'est pas très détaillée Le but de la rédaction de cet article est de l'analyser en détail, de présenter les améliorations de Vue 2.2 v-model
, puis intercalez-le. Parlons d'un peu de connaissances sur Vue.
Dans Vue, il existe de nombreuses méthodes similaires à Angular, principalement parce qu'Angular a été la source d'inspiration pour les premiers développements de Vue. Cependant, de nombreux problèmes dans Augular ont été résolus dans Vue.
v-model
Bien qu'il soit très similaire au ng-model
d'Angular qui utilise la liaison de données bidirectionnelle, Vue est un système de données unique flow. v-model
n'est que du sucre syntaxique : ↓
<input v-model="sth" /> <input v-bind:value="sth" v-on:input="sth = $event.target.value" />
La première ligne de code n'est en fait que du sucre syntaxique pour la deuxième ligne. Ensuite, la deuxième ligne de code peut être abrégée comme ceci : ↓
<input :value="sth" @input="sth = $event.target.value" />
Pour comprendre cette ligne de code, vous devez d'abord savoir que l'élément input
lui-même a un événement oninput, qui est nouvellement ajouté en HTML5, similaire à onchange
, chaque fois que le contenu de la zone de saisie change, il déclenchera oninput
et transmettra le dernier value
à sth
.
Si vous ne savez pas d'où vient $event, vous devez cliquer dessus et consulter la documentation.
Nous observons attentivement les deux lignes de code du sucre de syntaxe et de la syntaxe originale, et nous pouvons tirer une conclusion :
Lors de l'ajout de l'attribut v-model à l'élément , l'attribut v-model sera ajouté par défaut comme attribut de l'élément, puis utilisera l'événement 'input' comme événement déclencheur pour la livraison de la valeur en temps réel
v-model
peut non seulement être utilisé dans input
peut également être utilisé sur des composants Ce qui suit est un exemple similaire au didacticiel du site officiel de Vue (nous devons considérer deux problèmes. en regardant cet exemple) :
La valeur initiale du price
du composant parent est 100. Changer le La valeur du composant enfant peut mettre à jour celle du composant parent price
<div id="demo"> <currency-input v-model="price"></currentcy-input> <span>{{price}}</span></div><script src="https://cdn.bootcss.com/vue/2.3.0/vue.js?1.1.11"></script><script>Vue.component('currency-input', { template: ` <span> <input ref="input" :value="value" <!--为什么这里把 'input' 作为触发事件的事件名?`input` 在哪定义的?--> @input="$emit('input', $event.target.value)" > </span> `, props: ['value'],// 为什么这里要用 value 属性,value在哪里定义的?貌似没找到啊? })var demo = new Vue({ el: '#demo', data: { price: 100, } })</script>
. Si vous ne comprenez pas, vous pouvez regarder ce code : ↓v-model
<currency-input v-model="price"></currentcy-input><!--上行代码是下行的语法糖 <currency-input :value="price" @input="price = arguments[0]"></currency-input> -->
? Semblable à ce qui est résumé ci-dessus : value
input
Lors de l'ajout de l'attribut v-model à un composant, la valeur sera utilisée comme attribut du composant par défaut, et la valeur 'input' sera utilisée comme événement nom lors de la liaison d'événements au composant
v-model
<input type="checkbox" v-model="sth" />
et l'événement v-model
Cependant, ce dont nous avons besoin n'est pas l'attribut value
, mais l'attribut oninput
, et quand vous. cliquez dessus L'événement value
ne sera pas déclenché lorsque le bouton radio est sélectionné, il déclenchera uniquement l'événement checked
. C'est embarrassantoninput
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!