当前位置:首页 > VUE

vue实现表格添加删除

2026-01-22 12:12:01VUE

Vue 实现表格的添加与删除功能

数据绑定与表格渲染

在 Vue 中实现表格功能,需先定义表格数据数组和表单输入绑定的数据对象。通过 v-for 指令循环渲染表格行,并使用 v-model 绑定表单输入。

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in tableData" :key="index">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>
            <button @click="deleteRow(index)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>

    <div>
      <input v-model="newItem.name" placeholder="姓名" />
      <input v-model="newItem.age" placeholder="年龄" type="number" />
      <button @click="addRow">添加</button>
    </div>
  </div>
</template>

添加数据方法

定义 addRow 方法,将表单输入的新数据添加到表格数据数组中。添加前可进行简单校验,防止空数据。

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 20 },
        { name: '李四', age: 25 }
      ],
      newItem: { name: '', age: '' }
    }
  },
  methods: {
    addRow() {
      if (!this.newItem.name || !this.newItem.age) return
      this.tableData.push({ ...this.newItem })
      this.newItem = { name: '', age: '' } // 清空表单
    }
  }
}
</script>

删除数据方法

通过 deleteRow 方法,根据行索引从表格数据数组中移除对应项。使用 splice 方法确保响应式更新。

methods: {
  deleteRow(index) {
    this.tableData.splice(index, 1)
  }
}

完整组件示例

整合上述代码,形成完整组件。包含表格渲染、添加和删除功能,并处理基础输入校验。

<template>
  <div>
    <table border="1">
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in tableData" :key="index">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>
            <button @click="deleteRow(index)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>

    <div style="margin-top: 20px">
      <input v-model="newItem.name" placeholder="姓名" />
      <input v-model="newItem.age" placeholder="年龄" type="number" />
      <button @click="addRow">添加</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 20 },
        { name: '李四', age: 25 }
      ],
      newItem: { name: '', age: '' }
    }
  },
  methods: {
    addRow() {
      if (!this.newItem.name || !this.newItem.age) {
        alert('请填写完整信息')
        return
      }
      this.tableData.push({ ...this.newItem })
      this.newItem = { name: '', age: '' }
    },
    deleteRow(index) {
      if (confirm('确定删除吗?')) {
        this.tableData.splice(index, 1)
      }
    }
  }
}
</script>

关键点说明

  • 响应式数据:Vue 自动跟踪 tableData 的变化,更新 DOM。
  • 列表渲染v-for 需配合 :key 提升性能,通常使用唯一标识而非索引。
  • 方法逻辑:添加时需处理对象引用,避免直接修改 newItem 导致后续数据联动。
  • 用户交互:删除前通过 confirm 确认,提升用户体验。

vue实现表格添加删除

标签: 表格vue
分享给朋友:

相关文章

vue怎么实现选中删除

vue怎么实现选中删除

实现选中删除功能的方法 在Vue中实现选中删除功能通常涉及以下几个关键步骤: 数据绑定与选中状态管理 使用v-model或v-for指令绑定列表数据,结合复选框或单选按钮实现选中状态管理。例如:…

vue实现无线滚动列表

vue实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件: Vu…

vue日历表格实现

vue日历表格实现

Vue 日历表格实现方法 基础日历表格结构 使用 Vue 的模板语法构建日历表格框架,通过 v-for 循环生成日期单元格。核心是计算当前月份的天数及起始星期位置。 <template>…

vue状态管理怎么实现

vue状态管理怎么实现

Vue 状态管理实现方法 使用 Vuex(官方推荐) Vuex 是 Vue 的官方状态管理库,适合中大型应用。 安装 Vuex: npm install vuex --save 创建 Store 示…

vue实现3d宇宙

vue实现3d宇宙

Vue实现3D宇宙效果 使用Three.js库 Three.js是一个强大的JavaScript 3D库,可以轻松集成到Vue项目中。安装Three.js依赖: npm install three…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…