电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

使用element-ui +Vue 解決 table 里包含表單驗(yàn)證的問題

瀏覽:4日期:2023-01-06 17:03:16

應(yīng)用場(chǎng)景:

在實(shí)際使用中經(jīng)常會(huì)遇到需要在Form表單中使用table表格進(jìn)行表單提交,同時(shí)又需要對(duì)table的字段進(jìn)行校驗(yàn),效果如圖所示:

這個(gè)校驗(yàn)中,最關(guān)鍵的問題在于如何給el-form-item 動(dòng)態(tài)綁定prop。

:prop='’tableData.’ + scope.$index + ’.字段名’'

方法一:

<template> <div class='app-container'> <el-form :model='fromData' ref='from'> <el-table :data='fromData.domains'> <el-table-column label='姓名'> <template slot-scope='scope'> <el-form-item :prop='’domains.’+scope.$index+’.name’' :rules='fromaDataRules.name'> <el-input v-model='scope.row.name'></el-input> </el-form-item> </template> </el-table-column> <el-table-column label='地址'> <template slot-scope='scope'> <el-form-item :prop='’domains.’+scope.$index+’.desc’' :rules='fromaDataRules.desc'> <el-input v-model='scope.row.desc'></el-input> </el-form-item> </template> </el-table-column> </el-table> </el-form> <el-button type='warning' @click='submit(’from’)'>submit</el-button> </div></template> <script> export default { data() { return { fromData:{ domains:undefined }, fromaDataRules:{ name:[{ required: true, message: ’請(qǐng)輸入’, trigger: ’blur’ }], desc:[ { required: true, message: ’請(qǐng)?zhí)顚憽? trigger: ’blur’ }] }, domains:[], } }, mounted(){ this.initDomains() }, methods:{ initDomains(){ this.domains=[ { name: '小紅', desc: '11123' }, { name: '小紅', desc: '11123' } ] }, init(){ this.$set(this.fromData,’domains’,this.domains) }, submit(formName){ this.$refs[formName].validate((valid) => { if (valid) { alert(’submit!’); } else { console.log(’error submit!!’); return false; } }); } } }</script>

上述代碼中比較關(guān)鍵的部分有一下兩點(diǎn):

1、:prop='‘domains.’+scope.$index+’.name’' ,用于動(dòng)態(tài)綁定prop到el-form-item;

2、this.$set(this.fromData,‘domains’,this.domains) ,用于為fromData設(shè)置domains這個(gè)節(jié)點(diǎn)。

方法二:

<template> <div class='app-container'> <el-form :model='fromData' ref='from'> <el-table :data='fromData.domains'> <el-table-column label='姓名'> <template slot-scope='scope'> <el-form-item :prop='’domains.’+scope.$index+’.name’' :rules='fromData.fromaDataRules.name'> <el-input v-model='scope.row.name'></el-input> </el-form-item> </template> </el-table-column> <el-table-column label='地址'> <template slot-scope='scope'> <el-form-item :prop='’domains.’+scope.$index+’.desc’' :rules='fromData.fromaDataRules.desc'> <el-input v-model='scope.row.desc'></el-input> </el-form-item> </template> </el-table-column> </el-table> </el-form> <el-button type='warning' @click='submit(’from’)'>submit</el-button> </div></template> <script> export default { data() { return { fromData:{ fromaDataRules:{ name:[{ required: true, message: ’請(qǐng)輸入’, trigger: ’blur’ }], desc:[ { required: true, message: ’請(qǐng)?zhí)顚憽? trigger: ’blur’ }] }, domains:[], }, } }, mounted(){ this.initDomains() }, methods:{ initDomains(){ this.fromData.domains=[ { name: '小紅', desc: '11123' }, { name: '小紅', desc: '11123' } ] }, init(){ }, submit(formName){ this.$refs[formName].validate((valid) => { if (valid) { alert(’submit!’); } else { console.log(’error submit!!’); return false; } }); } } }</script>

補(bǔ)充知識(shí):Vue+ElementUI 完整增刪查改驗(yàn)證功能的表格

我就廢話不多說了,大家還是直接看代碼吧~

<template> <div class='block'> <el-col> <el-row> <el-form> <el-form-item> <el-input placeholder='請(qǐng)輸入名稱' v-model='query'></el-input> <el-button @click='handleSelect' style='float: left;margin-left: 10px'>查詢</el-button> <el-button @click='handleAdd' style='float: left;margin-left: 10px'>新增</el-button> </el-form-item> </el-form> </el-row> <el-row> <el-table :data='tableData' border> <el-table-column prop='date' label='日期' width='250'> </el-table-column> <el-table-column prop='name' label='姓名' width='250'> </el-table-column> <el-table-column prop='address' label='地址' width='350'> </el-table-column> <el-table-column> <template slot-scope='scope'> <el-button size='mini' @click='handleEdit(scope.$index,scope.row)'>編輯</el-button> <el-button size='mini' type='danger' @click='handleDelete(scope.$index,scope.row)'>刪除</el-button> </template> </el-table-column> </el-table> </el-row> <el-row> <el-dialog :title='operation===true ?’新增’:’編輯’' :visible.sync='dialogVisible' > <el-form label- :model='lineData' :rules='addRule' ref='lineData' > <el-form-item label='日期' prop='date'> <el-input v-model='lineData.date'></el-input> </el-form-item> <el-form-item label='姓名' prop='name'> <el-input v-model='lineData.name'></el-input> </el-form-item> <el-form-item label='地址'> <el-input v-model='lineData.address'></el-input> </el-form-item> <el-form-item> <el-button @click='handleSave' type='primary'>確定</el-button> <el-button @click='handleCancel'>取消</el-button> </el-form-item> </el-form> </el-dialog> </el-row> </el-col> </div></template><script>export default { data () { return { operation: true, dialogVisible: false, lineData: {}, editData: {}, query: ’’, addRule: { date: [{required: true, message: ’請(qǐng)輸入日期’, trigger: ’blur’}], name: [{required: true, message: ’請(qǐng)輸入名稱’, trigger: ’blur’}] }, tableData: [{ id: 1, date: ’2016-05-02’, name: ’王一虎’, address: ’上海市普陀區(qū)金沙江路 1518 弄’ }, { id: 2, date: ’2016-05-04’, name: ’王二虎’, address: ’上海市普陀區(qū)金沙江路 1517 弄’ }, { id: 3, date: ’2016-05-01’, name: ’王一虎’, address: ’上海市普陀區(qū)金沙江路 1519 弄’ }, { id: 4, date: ’2016-05-03’, name: ’王四虎’, address: ’上海市普陀區(qū)金沙江路 1516 弄’ }] } }, methods: { handleEdit (index, row) { this.editData = JSON.stringify(row) this.lineData = JSON.parse(this.editData) this.dialogVisible = true this.operation = false }, handleDelete (index, row) { this.tableData.splice(index, 1) }, handleAdd () { this.dialogVisible = true this.operation = true this.lineData = {} this.lineData.id = Math.random() }, handleSelect () { if (this.query !== ’’) { const tmpData = [] for (let item of this.tableData) { if (item.name === this.query) { tmpData.push(item) } } this.tableData = tmpData } }, handleSave () { this.$refs.lineData.validate((valid) => { if (valid) { this.addLine(this.lineData) this.dialogVisible = false } else { alert(’保存失敗’) return false } }) }, handleCancel () { this.dialogVisible = false }, addLine (item) { let existed = false for (let i = 0; i < this.tableData.length; i++) { if (this.tableData[i].id === item.id) { this.tableData[i].id = item.id this.tableData[i].name = item.name this.tableData[i].address = item.address this.tableData[i].date = item.date existed = true break } } if (!existed) { this.tableData.push(this.lineData) } } }}</script><style scoped> .block{ width: 75%; margin-left: 400px; margin-top: 200px; }</style>

以上這篇使用element-ui +Vue 解決 table 里包含表單驗(yàn)證的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 圆窗水平仪|伊莉莎冈特elesa+ganter | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | 冲击式破碎机-冲击式制砂机-移动碎石机厂家_青州市富康机械有限公司 | 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | 肉嫩度仪-凝胶测试仪-国产质构仪-气味分析仪-上海保圣实业发展有限公司|总部 |