Cette fois, je vais vous apporter un résumé de la méthode de liaison bidirectionnelle de Vue. Quelles sont les précautions pour que Vue implémente la liaison bidirectionnelle. Ce qui suit est un cas pratique, prenons un. regarder.
<input v-model="text" />
L'exemple ci-dessus n'est qu'un sucre syntaxique une fois développé. , c'est :
<input :value="text" @input="e => text = e.target.value" />
<my-dialog :visible.sync="dialogVisible" />
C'est aussi un sucre de syntaxe, décollé il est :
<my-dialog :visible="dialogVisible" @update:visible="newVisible => dialogVisible = newVisible" />
Le composant My-dialog peut être this.$emit('update:visible', newVisible)
lorsque des modifications sont visibles.
Vue autorise les composants auto-définis après la version 2.2.0 ' s v-model, ce qui conduit à la nécessité de considérer différentes configurations de composants lors de l'implémentation du v-model dans les fonctions JSX/rendu, ce qui ne peut pas toujours être le cas (si le modèle du composant my-dialog est { prop: 'visible', event: 'change' }) :
{ render(h) { return h('my-dialog', { props: { value: this.dialogVisible }, on: { input: newVisible => this.dialogVisible = newVisible } }) } }
{ render(h) { return h('my-dialog', { props: { visible: this.dialogVisible }, on: { change: newVisible => this.dialogVisible = newVisible } }) } }
{ render(h) { return h('my-dialog', { model: { value: this.dialogVisible, callback: newVisible => this.dialogVisible = newVisible } }) } }
{ render() { return ( <my-dialog {...{ model: { value: this.dialogVisible, callback: newVisible => this.dialogVisible = newVisible } }} /> ) } }
<template> <p v-show="_visible"> <p>完善个人信息</p> <p> <p>尊姓大名?</p> <input v-model="_answer" /> </p> <p> <button @click="_visible = !_visible">确认</button> <button @click="_visible = !_visible">取消</button> </p> </p> </template> <script> export default { name: 'prompt', props: { answer: String, visible: Boolean }, computed: { _answer: { get() { return this.answer }, set(value) { this.$emit('input', value) } }, _visible: { get() { return this.visible }, set(value) { this.$emit('update:visible', value) } } } } </script>
<template> <p v-show="actualVisible"> <p>完善个人信息</p> <p> <p>尊姓大名?</p> <input v-model="actualAnswer" /> </p> <p> <button @click="syncVisible(!actualVisible)">确认</button> <button @click="syncVisible(!actualVisible)">取消</button> </p> </p> </template> <script> import VueBetterSync from 'vue-better-sync' export default { name: 'prompt', mixins: [ VueBetterSync({ prop: 'answer', // 设置 v-model 的 prop event: 'input' // 设置 v-model 的 event }) ], props: { answer: String, visible: { type: Boolean, sync: true // visible 属性可用 .sync 双向绑定 } } } </script>
ou this.actual${PropName} = newValue
. this.sync${PropName}(newValue)
Explication détaillée des étapes pour activer le routage actuel avec vue
nodejs génère un code QR ( le plus simple)
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!