【Vue】我想求助一下,关于vue删除组件总是删除最后一个组件,也就是最新添加的组件。

人在風雨中 2021-04-29 01:09:58

<div style="padding-left: 190px" class="form-inline">
<!--<div v-for="(d,index) in counter" :key="index" style="padding-left: 190px" class="form-inline">-->
<!--<div v-for="(d,index) in counter" :key="index" style="padding-left: 190px" class="form-inline">-->
<!--此处生成党员表单-->
<!--将外部组件放到vue范围内-->
<member-info v-for="(item,index) in counter" :key="index" :content="item" :index="index" @delete="btn_delete"></member-info>
</div>
<div style="padding-left: 270px;padding-top: 20px">
<input v-on:click="btn_add" id="btn_add" class="btn btn-info" type="button" value="添加一个党员信息">
</div>



<!--外部定义组件,外部定义的组件不能写在vue范围内-->
<template id="tmp">
<div><!--组件内有多个标签必须有一个父div包起来-->
<div class="form-group">
<span style="color: red">*</span>姓名:           <label class="sr-only" for="exampleInputEmail3"></label>
<input type="email" class="form-control" id="exampleInputEmail3">
</div>        
<div class="form-group">
<span style="color: red">*</span>性别:<label class="sr-only" for="exampleInputPassword3"></label>
<input type="password" class="form-control">
</div>        
<div class="form-group">
<span style="color: red">*</span>出生年月:<label class="sr-only" for="exampleInputPassword3"></label>
<input type="password" class="form-control">
</div>        
<div class="form-group">
<span style="color: red">*</span>所属党组织:<label class="sr-only" for="exampleInputPassword3"></label>
<input type="password" class="form-control" id="exampleInputPassword3">
</div>        
<input @click="btn_delete" id="btn_delete" type="button" class="btn btn-danger" value="删除">
<br/><br/>
</div>
</template>



/*vue组件*/
Vue.component('member-info', {
template: '#tmp',
props:['content',"index"],
methods: {
btn_delete:function () {
alert(this.index);
this.$emit("delete",this.index)
},
}//methods END
});

var vm = new Vue({
el:'#vue_div',
data:{
counter:[],
},
methods:{
/*添加一个党员信息按钮 被点击,就会插入一个新组件*/
btn_add:function () {
this.counter.push({});
},
btn_delete:function (index) {
alert("删除");

this.counter.splice(index, 1)

},
}//methods END
});//new Vue END


以上的代码是点击id="btn_add"按钮会生成一个组件。然后点击id="btn_delete"按钮会删除当前点击的组件,但是总是会删除最后一个,index下标是正确的。我该如何更改?谢谢!
...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2021-04-29
  • 打赏
  • 举报
回复
说话,你MemberInfo中那么多空格字符……,要边距,用margin呀。而且。既然是v-for生成的。肯定不能指定id属性了,否则一大堆一样的id。这个不标准的。 而且你这个MemberInfo把什么都处理完不行吗?直接以props把counter传进去就行了。v-for,删除什么的全在里面弄完 你如果硬是要这样,因为你的结构很简单,也没有太多类似的功能按钮。所以那个删除按钮,个人更喜欢用slot插进去。然后删除事件直接在父组件定义并调用即可。不用emit转发了。毕竟它原本就归属于父组件的一个事件
泡泡鱼_ 2021-04-29
  • 打赏
  • 举报
回复
:key不要绑定下标,你可以在添加方法btn_add中,对push的对象手动加一个index,其值为this.counter.length。然后:key="item.index"即可
  • 打赏
  • 举报
回复
你要删除的是父组件的数组 ,使用 this.$emit("") 调用 member-info 的删除方法 传当前删除的index
Java学习平台是一个基于Spring Boot框架的Web应用,专为希望学习和提高Java编程技能的用户设计。该平台提供了一系列互动课程、实战项目和评估工具,帮助用户从基础语法到高级概念全面掌握Java语言。 系统的主要功能包括: 1. 课程管理:平台包含多门由浅入深的Java课程,涵盖基础知识、面向对象编程、数据结构、多线程等主题。 2. 视频教学:每门课程都配有高清视频讲解,由经验丰富的讲师授课,便于用户理解和吸收知识点。 3. 编程练习:提供在线代码编辑器,允许用户实时编写、测试和调试代码,支持多种编程语言。 4. 项目实战:通过实际项目练习,用户可以将所学知识应用于真实场景中,增强解决实际问题的能力。 5. 考试与认证:设置不同级别的在线考试,用户可以通过考试获得认证证书,证明其Java技能水平。 6. 社区交流:构建了一个技术社区,用户可以在此讨论问题、分享经验或求助于其他用户和专家。 7. 进度跟踪:系统记录用户的学习进度和成绩,帮助他们有效规划学习路径。 8. 移动适应性:支持移动端访问,确保用户在不同设备上均可继续学习。 本系统采用前后端分离的开发模式,前端可能使用React、Angular或Vue.js等现代JavaScript框架来构建用户界面,后端则利用Spring Boot提供的快速开发能力实现RESTful API接口。数据库通常选用MySQL或其他关系型数据库来存储用户资料、课程信息和学习进度等数据。 Spring Boot的使用使得项目具有快速搭建和易于部署维护的特点,同时Spring Boot生态系统中丰富的插件和组件支持了系统的快速开发和扩展。系统还考虑到了易用性和无障碍访问,使得不同水平的用户都能轻松上手。 总体而言,基于Spring Boot的Java学习平台提供了一个全面、高效、互动的学习环境,极大地促进了用户对Java语言的学习和理解,是现代教育技术中的重要组成部分。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧