组件的v-model
父组件 : <template> <div class="app"> <!-- 1.组件的v-model: 默认modelValue --> <counter v-model="appCounter"></counter> <!-- 上面的相当于下面的 --> <counter :modelValue="appCounter" @update:modelValue="appCounter = $event"></counter> <!-- 2.组件的v-model: 自定义名称counter --> <counter2 v-model:counter="appCounter" v-model:why="appWhy"></counter2> </div> </template> <script> import Counter from './Counter.vue' import Counter2 from './Counter2.vue' export default { components: { Counter, Counter2 }, data() { return { appCounter: 100, appWhy: "coderwhy" } } } </script> <style scoped> </style>
子组件 : Counter <template> <div> <h2>Counter: {{ modelValue }}</h2> <button @click="changeCounter">修改counter</button> </div> </template> <script> export default { props: { modelValue: { type: Number, default: 0 } }, emits: ["update:modelValue"], methods: { changeCounter() { this.$emit("update:modelValue", 999) } } } </script> <style scoped> </style>
子组件 : Counter2 <template> <div> <h2>Counter: {{ counter }}</h2> <button @click="changeCounter">修改counter</button> <!-- why绑定 --> <hr> <h2>why: {{ why }}</h2> <button @click="changeWhy">修改why的值</button> </div> </template> <script> export default { props: { counter: { type: Number, default: 0 }, why: { type: String, default: "" } }, emits: ["update:counter", "update:why"], methods: { changeCounter() { this.$emit("update:counter", 999) }, changeWhy() { this.$emit("update:why", "kobe") } } } </script> <style scoped> </style>
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/16615142.html