需求,表中默认有一个with携带参数表,点击添加能够新增一条with数据。并能够动态的增长和删除,利用vue绑定数组对象并循环输出列表。vue
期初示意图:数组
点击添加更多携带参数时,新增数据集,以下图所示:ui
elementUI官网有对单表单的添加,如今对多表单的添加,考虑的实现方式是,先写死一个必须的表单,须要新增表单的放在一个div里,在div中使用v-for生成,达到同时增长的效果。this
代码以下:spa
<!-- 已存在的 --> <el-form-item label="field" prop="field" :rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="field" placeholder="请输入field"></el-input> </el-form-item> <el-form-item label="name" prop="name" :rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="name" placeholder="请输入name"></el-input> </el-form-item> <el-form-item label="max" prop="max":rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="max" placeholder="请输入max"></el-input> </el-form-item> <!-- 动态生成 --> <div class="moreRules"> <div class="moreRulesIn" v-for="(item, index) in addForm.moreNotifyObject" :key="item.key" > <el-form-item label="field" :prop="'moreNotifyObject.' + index +'.field'" :rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="item.field" placeholder="请输入field" class="el-select_box"></el-input> </el-form-item> <el-form-item label="name" :prop="'moreNotifyObject.'+ index +'.name'":rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="item.name" placeholder="请输入name" class="el-select_box"></el-input> </el-form-item> <el-form-item label="max" :prop="'moreNotifyObject.'+ index +'.max'":rules="[{required: true, message: '请完善信息'}]"> <el-input v-model="item.max" placeholder="请输入max" class="el-select_box"></el-input> </el-form-item> <el-button @click="deleteRules(item, index)" >删除</el-button> </div> </div>
须要注意的一点是:.net
普通表单验证单项依靠的是prop..而动态生成的表单要用:prop3d
书写的语法是:prop="'moreNotifyObject.' + index +'.notifyobject'",moreNotifyObject是v-for绑定的数组,index是索引,notifyobject是表单绑定的v-model的名称,而后用.把他们连接起来。code
因此总结起来的语法就是:prop="'v-for绑定的数组.' + index + '.v-model绑定的变量'"orm
还有一个须要注意就是v-for的写法,要将表单的model名写进去对象
<div class="moreRulesIn" v-for="(item, index) in addForm.moreNotifyObject" :key="item.key">
数据代码以下:
addForm:{ name:'', content:'', moreNotifyObject:[{ field:'', name:'', max:'' }] },
数据初始化:
// 数据初始化 initData(){ this.addForm.moreNotifyObject = [] },
点击新增按钮时代码:
addUser() { this.addForm.moreNotifyObject.push({ field:'', name:'', max:'', }) },
删除行:
deleteRules(item, index) { this.index = this.addForm.moreNotifyObject.indexOf(item) if (index !== -1) { this.addForm.moreNotifyObject.splice(index, 1) } },
参考文章:https://blog.csdn.net/weixin_41041379/article/details/81908788