父组件通过一个数组的循环 来生成子组件。子组件上使用v-model绑定数组中的每一项。在子组件中修改父组件的值,父组件中的数据进行相应的改动
时间: 2024-10-22 22:00:59 浏览: 13
当父组件需要动态地生成多个相同的子组件,并且每个子组件都与数组中的某一项数据关联时,你可以这样做:
首先,在父组件的模板中,通过 `v-for` 循环遍历数组,并为每个子组件提供一个唯一的索引作为 `key`:
```html
<template>
<div>
<div v-for="(item, index) in items" :key="index">
<child-component :item="item" @change="handleItemChange(index)" />
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: [...] // 初始化数组
};
},
methods: {
handleItemChange(index, newItem) {
this.items[index] = newItem; // 修改对应索引处的数组元素
}
}
};
</script>
```
在这个例子中,`child-component` 是你定义的子组件,它接收一个名为 `item` 的 prop,并使用 `v-model` 来绑定该 prop。当子组件中的数据发生变化时,通常会通过自定义事件如 `@change` 回调函数 `handleItemChange` 来通知父组件更新。
子组件代码示例:
```html
<template>
<input type="text" v-model="item.value" />
<!-- 更改此处内容后,通过 @change 触发父组件的更新 -->
<button @click="$emit('change', { value: item.value })">Save</button>
</template>
<script>
export default {
props: {
item: {
type: Object,
required: true,
}
}
};
</script>
```
阅读全文