在 Vue 和 Element UI 中,实现表格的增删改可以通过以下步骤完成:

  1. 在 Vue 组件中定义表格数据,例如:

xmlCopy

<template>
  <el-table :data="tableData">
    <el-table-column prop="name" label="姓名"></el-table-column>
    <el-table-column prop="age" label="年龄"></el-table-column>
    <el-table-column prop="address" label="地址"></el-table-column>
    <el-table-column label="操作">
      <template #default="{row}">
        <el-button @click="editRow(row)">编辑</el-button>
        <el-button type="danger" @click="deleteRow(row)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 20, address: '北京市' },
        { name: '李四', age: 25, address: '上海市' },
        { name: '王五', age: 30, address: '广州市' }
      ],
      editForm: {
        name: '',
        age: '',
        address: ''
      },
      editIndex: -1
    }
  },
  methods: {
    editRow(row, index) {
      this.editForm = { ...row }
      this.editIndex = index
    },
    saveRow() {
      if (this.editIndex === -1) {
        // 新增
        this.tableData.push(this.editForm)
      } else {
        // 修改
        this.tableData.splice(this.editIndex, 1, this.editForm)
      }
      this.cancelEdit()
    },
    deleteRow(row) {
      const index = this.tableData.indexOf(row)
      if (index !== -1) {
        this.tableData.splice(index, 1)
      }
    },
    cancelEdit() {
      this.editForm = {
        name: '',
        age: '',
        address: ''
      }
      this.editIndex = -1
    }
  }
}
</script>
  1. 在表格中添加操作列,并在操作列中添加编辑和删除按钮。
  2. 定义编辑和删除方法,在方法中修改表格数据。
  3. 在编辑方法中,将当前行的数据复制到一个编辑表单对象中,并记录当前行的索引。
  4. 在编辑表单中,使用 v-model 指令绑定表单数据,并使用 v-if 指令判断当前是否处于编辑状态。
  5. 在编辑表单中,添加保存和取消按钮,分别调用保存和取消编辑方法。
  6. 在保存方法中,根据当前行的索引判断是新增还是修改操作,并将编辑表单的数据更新到表格数据中。
  7. 在取消编辑方法中,重置编辑表单的数据和当前行的索引。

需要注意的是,在编辑表单中,可以使用 :rules 属性绑定校验规则,例如:vimCopy

<el-form-item label="姓名" prop="name">
  <el-input v-model="editForm.name"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
  <el-input v-model.number="editForm.age"></el-input>
</el-form-item>
<el-form-item label="地址" prop="address">
  <el-input v-model="editForm.address"></el-input>
</el-form-item>

在上面的示例中,我们使用了 el-table 组件渲染表格数据,并使用了 el-table-column 组件渲染表格列。在表格列中,我们使用了 v-for 指令动态生成表格列。在表格列中的操作列中,我们使用了 v-if 指令判断当前是否处于编辑状态,并添加了保存和取消按钮。在组件的 data 选项中,我们定义了表格数据、编辑表单数据和当前编辑行的索引。在组件的 methods 中,我们定义了 editRowsaveRowdeleteRow 和 cancelEdit 四个方法,用于实现编辑、保存、删除和取消编辑操作。在编辑表单中,我们使用了 v-model 指令绑定表单数据,使用了 v-if 指令判断当前是否处于编辑状态,并添加了保存和取消按钮。在需要校验的表单项中,可以使用 :rules 属性绑定校验规则。

需要注意的是,以上示例中的编辑和删除操作是基于表格数据的索引进行操作的,如果需要根据其他唯一标识进行操作,需要在表格数据中添加该标识,并在编辑和删除方法中根据该标识进行操作。同时,在编辑方法中需要将编辑表单的数据复制到一个新的对象中,以避免直接修改原始数据。

By lxcss

发表评论

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