Vue3使用el-form嵌套el-table進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)功能
概述
在實(shí)際開發(fā)過程中,我們經(jīng)常需要處理表格中的表單數(shù)據(jù),比如在編輯表格中的某一行數(shù)據(jù)時(shí)進(jìn)行校驗(yàn)。本文將介紹如何在 Vue3 和 Element Plus 中實(shí)現(xiàn)這一功能。
示例代碼
<template> <div> <el-form ref="formRef" :model="formObj" :rules="rules"> <el-table :data="formObj.list"> <el-table-column label="名稱" align="center"> <template #default="scope"> <el-form-item :prop="'list.' + scope.$index + '.name'" :rules="[ { required: true, message: '名稱不能為空', trigger: 'blur' }, ]" > <el-input v-model="scope.row.name" /> </el-form-item> <el-form-item :prop="'list.' + scope.$index + '.desc'" :rules="[ { required: true, message: '描述不能為空', trigger: 'blur' }, ]" > <el-input v-model="scope.row.desc" /> </el-form-item> </template> </el-table-column> </el-table> </el-form> </div> </template> <script setup> import { ref } from 'vue'; let formObj = ref({ list: [ { name: '', desc: '' } ], }); const formRef = ref(null); const rules = { // 這里不需要單獨(dú)定義規(guī)則,因?yàn)橐呀?jīng)在模板中指定了 }; // 提交表單 const submitForm = () => { formRef.value.validate((valid) => { if (valid) { console.log('表單提交成功'); // 進(jìn)行表單提交邏輯 } else { console.log('表單驗(yàn)證失敗'); return false; } }); }; </script> <style> </style>
分析
1. 定義表單數(shù)據(jù)
在這個(gè)例子中,我們使用了一個(gè)名為 formObj
的響應(yīng)式對(duì)象來存儲(chǔ)表格的數(shù)據(jù)。formObj
包含一個(gè)名為 list
的數(shù)組,數(shù)組中的每個(gè)元素都代表表格中的一行。
let formObj = ref({ list: [ { name: '', desc: '' } ], });
2. 表單和表格的結(jié)合
在模板中,我們使用 <el-form>
組件包裹整個(gè)表格,并將 formObj
作為 model
傳入。這意味著整個(gè)表單將與 formObj
的數(shù)據(jù)綁定在一起。
<el-form ref="formRef" :model="formObj" :rules="rules"> <el-table :data="formObj.list"> <!-- 表格列內(nèi)容 --> </el-table> </el-form>
3. 單條數(shù)據(jù)的校驗(yàn)
為了實(shí)現(xiàn)每一條數(shù)據(jù)的獨(dú)立校驗(yàn),我們需要在 <el-form-item>
中指定 prop
屬性。這里我們使用模板字符串動(dòng)態(tài)生成 prop
的值,使其能夠指向表格中特定行的特定字段。
<el-form-item :prop="'list.' + scope.$index + '.name'" :rules="[ { required: true, message: '名稱不能為空', trigger: 'blur' }, ]" > <el-input v-model="scope.row.name" /> </el-form-item>
4. 提交表單
當(dāng)用戶點(diǎn)擊提交按鈕時(shí),我們可以通過調(diào)用 <el-form>
的 validate
方法來觸發(fā)表單驗(yàn)證。
const submitForm = () => { formRef.value.validate((valid) => { if (valid) { console.log('表單提交成功'); // 進(jìn)行表單提交邏輯 } else { console.log('表單驗(yàn)證失敗'); return false; } }); };
總結(jié)
通過上述方法,我們可以實(shí)現(xiàn)在 Vue3 中使用 Element Plus 的 <el-form>
組件嵌套 <el-table>
進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)。這在實(shí)際項(xiàng)目中非常有用,尤其是需要用戶輸入大量數(shù)據(jù)并進(jìn)行實(shí)時(shí)驗(yàn)證的場(chǎng)景下。
到此這篇關(guān)于Vue3使用el-form嵌套el-table進(jìn)行單條數(shù)據(jù)的表單校驗(yàn)功能的文章就介紹到這了,更多相關(guān)Vue3 el-form嵌套el-table表單校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你使用vue-autofit 一行代碼搞定自適應(yīng)可視化大屏
這篇文章主要為大家介紹了使用vue-autofit 一行代碼搞定自適應(yīng)可視化大屏教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05vue使用Split封裝通用拖拽滑動(dòng)分隔面板組件
這篇文章主要介紹了vue使用Split封裝通用拖拽滑動(dòng)分隔面板組件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能 exif.js實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能,以及圖片上傳功能引用exif.js,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04vue使用富文本編輯器vue-quill-editor的操作指南和注意事項(xiàng)
vue中很多項(xiàng)目都需要用到富文本編輯器,在使用了ueditor和tinymce后,發(fā)現(xiàn)并不理想,所以果斷使用vue-quill-editor來實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue使用富文本編輯器vue-quill-editor的操作指南和注意事項(xiàng),需要的朋友可以參考下2023-05-05詳解Vuejs2.0 如何利用proxyTable實(shí)現(xiàn)跨域請(qǐng)求
本篇文章主要介紹了Vuejs2.0 如何利用proxyTable實(shí)現(xiàn)跨域請(qǐng)求,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08詳解vue渲染從后臺(tái)獲取的json數(shù)據(jù)
這篇文章主要介紹了詳解vue渲染從后臺(tái)獲取的json數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07vue-create創(chuàng)建VUE3項(xiàng)目詳細(xì)圖文教程
create-vue是Vue官方新的腳手架工具,底層切換到了vite(下一代前端工具鏈),為開發(fā)提供極速響應(yīng),下面這篇文章主要給大家介紹了關(guān)于vue-create創(chuàng)建VUE3項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2024-03-03vue基于Teleport實(shí)現(xiàn)Modal組件
Teleport 提供了一種干凈的方法,允許我們控制在 DOM 中哪個(gè)父節(jié)點(diǎn)下渲染了 HTML,而不必求助于全局狀態(tài)或?qū)⑵洳鸱譃閮蓚€(gè)組件。2021-05-05