在 Element UI 的 el-table 组件中,可以使用 el-form 和 el-table 组合来实现动态添加行,其中 el-form 用于包裹整个表单,而 el-table 用于渲染表格数据。下面是一个示例:xmlCopy

<template>
  <el-form ref="form" :model="formData" label-width="80px">
    <el-table :data="tableData" style="margin-top: 20px;">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column label="操作">
        <template #default="{row}">
          <el-button type="danger" @click="deleteRow(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div style="margin-top: 20px;">
      <el-button type="primary" @click="addRow">新增</el-button>
      <el-button type="primary" @click="submitForm">提交</el-button>
    </div>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      formData: {
        name: '',
        age: null
      },
      tableData: []
    }
  },
  methods: {
    addRow() {
      this.tableData.push({
        name: '',
        age: null
      })
    },
    deleteRow(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    },
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          console.log(this.tableData)
          // 可以在此处发送表单数据到后端进行处理
        } else {
          console.log('表单验证失败')
          return false
        }
      })
    }
  }
}
</script>

在上面的示例中,我们使用了 el-form 和 el-table 组合来实现动态添加行的功能。在表单中,我们使用了 v-model 指令将表单数据和输入框进行双向绑定,使用了 el-button 组件添加了“新增”和“提交”按钮。在表格中,我们使用了 el-table-column 组件渲染表格列,并使用了插槽来渲染“操作”列。

在组件的 data 选项中,我们定义了表单数据和表格数据。在组件的 methods 中,我们定义了 addRowdeleteRow 和 submitForm 三个方法。其中,addRow 方法用于添加一行表格数据,deleteRow 方法用于删除指定行的表格数据,submitForm 方法用于提交表单数据。在 submitForm 方法中,我们使用 el-form 组件的 validate 方法进行表单验证,如果验证通过,则可以将表格数据发送到后端进行处理,例如使用 Axios 库发送 POST 请求。

需要注意的是,在动态添加行的过程中,需要将表格数据定义为响应式对象,以便在添加/删除行后自动更新表格的显示。此外,由于 el-form 组件的验证是基于数据模型进行的,因此需要在表单数据对象中为每个输入框定义一个初始值。

By lxcss

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注