Vue3 使用 el-form 嵌套 el-table 进行单条数据的表单校验

概述

在实际开发过程中,我们经常需要处理表格中的表单数据,比如在编辑表格中的某一行数据时进行校验。本文将介绍如何在 Vue3 和 Element Plus 中实现这一功能。

示例代码

<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=&
### Vue3 中 `el-form` 嵌套 `el-table` 实现 在 Vue3Element Plus 组件库中,可以使用 `<el-form>` 组件包裹整个表格,并将 `formObj` 作为模型传递给表单。这使得整个表单能够与 `formObj` 的数据绑定在一起[^1]。 #### HTML 结构 ```html <template> <div> <el-form ref="formRef" :model="formObj" :rules="rules"> <el-table :data="formObj.list"> <!-- 定义表格列 --> <el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="value" label="数值"></el-table-column> <!-- 更多列定义... --> <!-- 自定义列用于操作按钮 --> <el-table-column fixed="right" width="200px" align="center" label="操作"> <template v-slot="{ row, $index }"> <el-button @click.prevent="validateSingle(row)">校验</el-button> </template> </el-table-column> </el-table> </el-form> </div> </template> ``` #### JavaScript 部分 为了确保每次点击“校验”按钮时只针对特定行的数据进行验证,在脚本部分需设置相应的逻辑: ```javascript <script setup> import { reactive, ref } from &#39;vue&#39;; import { ElMessage } from &#39;element-plus&#39;; const formRef = ref(null); let formObj = reactive({ list: [ { name: "示例项", value: "" } ] }); // 表单规则配置 const rules = reactive({ value: [{ required: true, message: &#39;请输入数值&#39;, trigger: [&#39;blur&#39;] }] }) function validateSingle(row) { const index = formObj.list.indexOf(row); // 获取对应字段名并触发单独验证 let fieldKey = `list.${index}.value`; formRef.value.validateField(fieldKey, (errorMessage) => { if (!errorMessage) { ElMessage.success(&#39;校验成功&#39;); } else { ElMessage.error(errorMessage); } }); } </script> ``` 此代码片段展示了如何通过指定路径来调用 `validateField()` 方法完成对某一行记录的独立检验工作。 对于性能优化方面,当存在大量数据或复杂场景下可能会遇到页面响应缓慢的情况。一种解决方案是在同一时刻仅允许一个单元格处于编辑状态,其余则显示静态文本而非完整的表单控件;另外还可以考虑采用懒加载技术减少初始渲染量以及合理利用虚拟滚动提升效率[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端学步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值