父子组件双向绑定
时间: 2023-07-22 08:09:04 浏览: 85
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
父子组件双向绑定是指,父组件可以将数据传递给子组件,并且子组件可以修改这个数据,同时这个修改的结果会影响到父组件中的数据。在Vue中,可以通过v-model指令来实现双向绑定。具体实现方式如下:
1. 在父组件中,通过props将数据传递给子组件,同时在子组件中添加一个props定义来接收父组件传递过来的数据。
2. 在子组件中,通过$emit方法来触发一个自定义事件,并将修改后的数据作为参数传递给父组件。
3. 在父组件中,监听这个自定义事件,并更新父组件中的数据。
下面是一个示例代码:
父组件中:
```
<template>
<div>
<h1>{{ message }}</h1>
<ChildComponent v-model="message"></ChildComponent>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
data() {
return {
message: 'Hello World'
}
}
}
</script>
```
子组件中:
```
<template>
<div>
<input type="text" v-model="localValue">
</div>
</template>
<script>
export default {
props: {
value: {
type: String,
required: true
}
},
data() {
return {
localValue: this.value
}
},
watch: {
localValue(newVal) {
this.$emit('input', newVal);
}
}
}
</script>
```
在上面的代码中,父组件中使用了v-model指令来将message属性传递给了子组件。在子组件中,使用了props来接收父组件传递过来的value属性,并将它保存在localValue中。在localValue发生变化时,通过$emit方法触发了一个名为input的自定义事件,并将修改后的值作为参数传递给父组件。在父组件中,监听了这个自定义事件,并更新了message属性的值。
阅读全文