赞
踩
朋友有个需求,vue中。点击新增,会新增一组表单。帮她写了一下。直接上代码吧。自我感觉注释的清清楚楚。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>DEMO</title> <script src="../../js/vue.js"></script> <!--引用vue--> <script src="../../lib/index.js"></script> <!--引用elementJs--> <link rel="stylesheet" href="../../lib/index.css"> <!--引用element css --> </head> <body> <div id="root"> <div style="margin-top: 50px"> <!--注意注意注意 你这一块所有的数据都是从data中的memberSelect中取的 在这循环之后 所有的数据是从 partyNum 取的 --> <div v-for="(partyNum,index) in memberSelect"> <!--这里是循环--> <br> <br> <template> select: <el-select v-model="partyNum.value" placeholder="请选择" @change="getCenter(index)"> <!--这里是下拉框 对应的是partyNum.value 也就是 data中的memberSelect.value--> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> <br> <!--label的值 以及 value的值 也就是两个input框的值 都是在select选择的时候 @change="getCenter(index)" 这个函数中赋值的 --> label: <el-input v-model="partyNum.name" style="width: 300px"></el-input> <!--这里是第一个input 对应的是partyNum.name 也就是 data中的memberSelect.name---> <br> value: <el-input v-model="partyNum.id" style="width: 300px"></el-input><!--这里是第二个input 对应的是partyNum.id 也就是 data中的memberSelect.id---> </template> <input type="button" @click="remove(index)" value="删除"> </div> <input type="button" @click="adds" value="新增"> </div> <span>{{memberSelect}}</span> </div> </body> </html> <script> tablevm = new Vue({ el: "#root", data: { options: [{ //这里我是给select值写死了 value: '1', label: '写了五行关于火的诗' }, { value: '2', label: '两行烧茶' }, { value: '3', label: '两行留到冬天取暖' }, { value: '4', label: '剩下的一行' }, { value: '5', label: '留给你在停电的晚上读我' }], memberSelect: [{"value": "", "name": "", "id": ""}] //这里是你上边所循环的东西 }, methods: { adds(){ let datas = { //这里定义了一个对象 "value": "", "name": "", "id": "" }; this.memberSelect.push(datas); //这里 每次点新增 把定义的这个空的对象 push到memberSelect这个数组中 }, getCenter(index){ //这个是你的change函数 //index就是你所操作select的下标 换言之 就是data中memberSelect数组中 你所操作那个对象的下标 console.log(index); var center = ""; //定义一个空来放获取到的所谓的label for (var i = 0; i < this.options.length; i++) { //循环判断 if (this.options[i].value == this.memberSelect[index].value) { center = this.options[i].label; } } //这里可以把所谓的label放到你vue实例的某个值中 console.log(center); this.memberSelect[index].name = center; //这里把下拉框对应的label值放在data中memberSelect数组相对应的下标的对象中 this.memberSelect[index].id = this.memberSelect[index].value;//这里把下拉框对应的value值放在data中memberSelect数组相对应的下标的对象中 }, remove(index){ //这里是删除 index的值跟上边的getCenter函数的index同理 console.log(index); var arr = this.memberSelect; //这个是你原始的data中的memberSelect数组 arr.splice(index, 1); //这里通过下标删除数组中你所需要删除的元素 this.memberSelect = arr; //把删除过元素后的数组 更新到data中的memberSelect数组中 } } }); </script> 所实现的效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。