当前位置:首页 > VUE

vue表格实现单行编辑

2026-02-22 05:35:48VUE

Vue 表格实现单行编辑的方法

使用 v-ifv-else 切换显示模式

在表格的每一行中,通过 v-ifv-else 控制编辑状态。默认显示文本内容,点击编辑按钮时切换为输入框。

vue表格实现单行编辑

<template>
  <table>
    <tr v-for="(item, index) in tableData" :key="index">
      <td>
        <span v-if="!item.isEditing">{{ item.name }}</span>
        <input v-else v-model="item.name" />
      </td>
      <td>
        <button @click="toggleEdit(item)">
          {{ item.isEditing ? '保存' : '编辑' }}
        </button>
      </td>
    </tr>
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', isEditing: false },
        { name: '李四', isEditing: false },
      ],
    };
  },
  methods: {
    toggleEdit(item) {
      item.isEditing = !item.isEditing;
    },
  },
};
</script>

使用 v-show 控制编辑状态

v-if 类似,但 v-show 仅切换 CSS 的 display 属性,适合频繁切换的场景。

vue表格实现单行编辑

<template>
  <table>
    <tr v-for="(item, index) in tableData" :key="index">
      <td>
        <span v-show="!item.isEditing">{{ item.name }}</span>
        <input v-show="item.isEditing" v-model="item.name" />
      </td>
      <td>
        <button @click="toggleEdit(item)">
          {{ item.isEditing ? '保存' : '编辑' }}
        </button>
      </td>
    </tr>
  </table>
</template>

结合计算属性实现临时编辑

通过临时变量保存编辑前的数据,避免直接修改原始数据,适合需要取消编辑的场景。

<template>
  <table>
    <tr v-for="(item, index) in tableData" :key="index">
      <td>
        <span v-if="!item.isEditing">{{ item.name }}</span>
        <input v-else v-model="tempEditData.name" />
      </td>
      <td>
        <button @click="startEdit(item)" v-if="!item.isEditing">编辑</button>
        <button @click="saveEdit(item)" v-else>保存</button>
        <button @click="cancelEdit(item)" v-if="item.isEditing">取消</button>
      </td>
    </tr>
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', isEditing: false },
        { name: '李四', isEditing: false },
      ],
      tempEditData: {},
    };
  },
  methods: {
    startEdit(item) {
      this.tempEditData = { ...item };
      item.isEditing = true;
    },
    saveEdit(item) {
      Object.assign(item, this.tempEditData);
      item.isEditing = false;
    },
    cancelEdit(item) {
      item.isEditing = false;
    },
  },
};
</script>

使用第三方表格组件(如 Element UI)

Element UI 的 el-table 组件内置了编辑功能,可以通过插槽自定义编辑逻辑。

<template>
  <el-table :data="tableData">
    <el-table-column prop="name" label="姓名">
      <template #default="{ row }">
        <span v-if="!row.isEditing">{{ row.name }}</span>
        <el-input v-else v-model="row.name" />
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template #default="{ row }">
        <el-button @click="toggleEdit(row)">
          {{ row.isEditing ? '保存' : '编辑' }}
        </el-button>
      </template>
    </el-table-column>
  </el-table>
</template>

注意事项

  • 编辑状态需要绑定到每一行的数据对象上,避免全局状态冲突。
  • 临时数据保存适合需要撤销操作的场景。
  • 第三方组件通常提供更完善的编辑功能,如校验、键盘事件等。

标签: 表格编辑
分享给朋友:

相关文章

vue 实现表格单选

vue 实现表格单选

实现表格单选的方法 在Vue中实现表格单选功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-model绑定选中项 通过v-model绑定一个变量来记录当前选中的行数据。当用户点击某一行时…

vue实现简单表格

vue实现简单表格

Vue 实现简单表格的方法 使用原生 HTML 表格 在 Vue 模板中可以直接使用 HTML 原生表格标签,通过 v-for 动态渲染数据: <template> <tabl…

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,如边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin:…

vue实现表格

vue实现表格

Vue实现表格的方法 在Vue中实现表格可以通过多种方式完成,包括使用原生HTML表格、第三方组件库或自定义组件。以下是几种常见的方法: 使用原生HTML表格 在Vue模板中直接使用HTML的…

vue表格实现单选框

vue表格实现单选框

Vue 表格实现单选框的方法 在 Vue 中实现表格单选框功能,可以通过结合 el-table(Element UI)或原生表格与 Vue 的数据绑定特性完成。以下是几种常见实现方式: 使用 Ele…

vue实现表格复选

vue实现表格复选

实现表格复选的基本思路 在Vue中实现表格复选功能,通常需要结合v-model绑定选中状态,监听复选框变化事件,以及维护一个选中项的数组。以下是具体实现方法: 基础实现步骤 数据准备 定义表格数据…