vue 3父子组件绑定事件
时间: 2023-10-30 19:07:47 浏览: 111
在Vue3中,实现父子组件之间的双向绑定可以通过使用v-model指令。在父组件中,通过v-model绑定一个父组件的属性,并将这个属性作为props传递给子组件。而在子组件中,通过使用emit方法触发一个名为"update:modelValue"的事件来更新父组件的属性。
具体的代码示例如下:
父组件:
```
<template>
<div>
<h1>父组件</h1>
<p>用户名: {{username}}</p>
父组件输入框:<input type="text" v-model="parentValue" />
<p>---------------------------------------------------------------------------------</p>
<Comp2 v-model:name="username" :value="parentValue"/>
</div>
</template>
<script>
import Comp2 from "./Comp2.vue"
export default {
components: {
Comp2
},
data() {
return {
username: '',
parentValue: "父组件传给子组件的值.."
}
}
};
</script>
```
子组件:
```
<template>
<div>
<h2>子组件</h2>
<p>用户名: {{name}}</p>
子组件输入框:<input type="text" v-model="internalValue" />
</div>
</template>
<script>
export default {
props: {
value: {
type: String,
required: true
}
},
data() {
return {
internalValue: this.value
}
},
watch: {
internalValue(newValue) {
this.$emit('update:modelValue', newValue);
}
},
computed: {
name: {
get() {
return this.internalValue;
},
set(value) {
this.internalValue = value;
this.$emit('update:modelValue', value);
}
}
}
};
</script>
```
在父组件中,我们使用v-model指令来绑定username属性,并将这个属性作为props传递给子组件Comp2。在子组件中,我们使用props声明接收的value属性,并将其作为子组件内部的internalValue来进行操作。当子组件内部的internalValue发生变化时,我们使用$emit方法触发名为"update:modelValue"的事件,并将新的值作为参数传递给父组件。
阅读全文