实现的功能:
1、父组件中点击“新增按钮”,新增一个子组件
2、在子组件中点击“删除按钮”,删除对应的子组件
遇见的问题:
在子组件删除内容时,子组件并没有被删除。
如图:
源码:
父组件 Parent.vue 源码
<template>
<div>
<button @click="add">添加</button>
<children
v-for="(item,index) in arr"
:key="index"
:index="index"
@remove="remove">
</children>
</div>
</template>
<script>
import Children from '@/components/Children'
export default {
data() {
return {
t:0,
arr:[]
};
},
components: {
Children
},
methods: {
//点击新增子组件
add(){
this.arr.push({})
},
//删除子组件
remove(n){
this.arr.splice(n,1);
}
}
};
</script>
子组件 Children.vue 源码
<template>
<div>
<div class="box">
<input type="text" placeholder="请输入内容后再删除" />
<button @click="del(index)">删除</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
};
},
props: ['index'],
methods: {
del(n){
this.$emit('remove',n);
}
}
};
</script>
<style scoped>
span{
margin-right: 10px
}
.box{
display: flex;
margin: 10px 0;
}
</style>
原因: 下标取错
<button @click="del(index)">删除</button>
这里取得到index ? No,
del(){