父子组件v-model,子组件v-model
时间: 2023-10-18 20:30:44 浏览: 99
父子组件之间的双向绑定可以通过在父组件中使用 `v-model` 并将子组件作为参数来实现。在子组件中,可以通过 `props` 接收父组件传递的值,然后使用 `emits` 发送一个自定义事件来更新父组件中的数据。这样父组件的数据更新时,子组件也会相应地更新,反之亦然。
下面是一个简单的示例,展示了父子组件之间的双向绑定:
父组件:
```vue
<template>
<div>
<p>父组件:{{ parentValue }}</p>
<ChildComponent v-model="parentValue"></ChildComponent>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent,
},
data() {
return {
parentValue: '',
};
},
};
</script>
```
子组件:
```vue
<template>
<div>
<p>子组件:{{ childValue }}</p>
<input v-model="childValue">
</div>
</template>
<script>
export default {
emits: ['update:modelValue'],
props: {
modelValue: {
type: String,
required: true,
},
},
computed: {
childValue: {
get() {
return this.modelValue;
},
set(value) {
this.$emit('update:modelValue', value);
},
},
},
};
</script>
```
在上述示例中,父组件中的 `v-model="parentValue"` 将父组件的 `parentValue` 数据绑定到子组件的 `modelValue` 属性上。子组件中使用 `v-model` 来绑定 `childValue` 到一个输入框上,并在 `set` 方法中通过 `$emit` 发送一个自定义事件 `update:modelValue` 来更新父组件中的数据。
这样,当父组件的数据发生变化时,子组件会更新,当子组件的输入框内容发生变化时,父组件的数据也会相应地更新。
阅读全文