当前位置:首页 > VUE

vue实现表格的增

2026-02-20 22:53:23VUE

Vue 实现表格的增删改查

初始化表格数据

在 Vue 的 data 中定义表格数据和表单数据模型:

data() {
  return {
    tableData: [
      { id: 1, name: '张三', age: 25 },
      { id: 2, name: '李四', age: 30 }
    ],
    form: {
      id: '',
      name: '',
      age: ''
    },
    isEdit: false
  }
}

表格渲染

使用 v-for 指令渲染表格:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="item in tableData" :key="item.id">
      <td>{{ item.id }}</td>
      <td>{{ item.name }}</td>
      <td>{{ item.age }}</td>
      <td>
        <button @click="editItem(item)">编辑</button>
        <button @click="deleteItem(item.id)">删除</button>
      </td>
    </tr>
  </tbody>
</table>

添加数据

创建表单并实现添加功能:

<form @submit.prevent="submitForm">
  <input v-model="form.name" placeholder="姓名">
  <input v-model="form.age" placeholder="年龄" type="number">
  <button type="submit">{{ isEdit ? '更新' : '添加' }}</button>
</form>
methods: {
  submitForm() {
    if (this.isEdit) {
      const index = this.tableData.findIndex(item => item.id === this.form.id)
      this.tableData.splice(index, 1, { ...this.form })
    } else {
      this.form.id = Date.now()
      this.tableData.push({ ...this.form })
    }
    this.resetForm()
  },
  resetForm() {
    this.form = { id: '', name: '', age: '' }
    this.isEdit = false
  }
}

编辑数据

实现编辑功能:

methods: {
  editItem(item) {
    this.form = { ...item }
    this.isEdit = true
  }
}

删除数据

实现删除功能:

methods: {
  deleteItem(id) {
    this.tableData = this.tableData.filter(item => item.id !== id)
  }
}

使用 Element UI 实现表格操作

如果使用 Element UI 组件库,可以简化实现:

安装 Element UI

npm install element-ui

引入 Element UI

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

使用 el-table 组件

<el-table :data="tableData" style="width: 100%">
  <el-table-column prop="id" label="ID"></el-table-column>
  <el-table-column prop="name" label="姓名"></el-table-column>
  <el-table-column prop="age" label="年龄"></el-table-column>
  <el-table-column label="操作">
    <template slot-scope="scope">
      <el-button size="mini" @click="editItem(scope.row)">编辑</el-button>
      <el-button size="mini" type="danger" @click="deleteItem(scope.row.id)">删除</el-button>
    </template>
  </el-table-column>
</el-table>

<el-dialog :title="isEdit ? '编辑数据' : '添加数据'" :visible.sync="dialogVisible">
  <el-form :model="form">
    <el-form-item label="姓名">
      <el-input v-model="form.name"></el-input>
    </el-form-item>
    <el-form-item label="年龄">
      <el-input v-model="form.age" type="number"></el-input>
    </el-form-item>
  </el-form>
  <span slot="footer">
    <el-button @click="dialogVisible = false">取消</el-button>
    <el-button type="primary" @click="submitForm">确定</el-button>
  </span>
</el-dialog>

添加对话框控制

data() {
  return {
    dialogVisible: false,
    // 其他数据...
  }
},
methods: {
  editItem(item) {
    this.form = { ...item }
    this.isEdit = true
    this.dialogVisible = true
  },
  addItem() {
    this.resetForm()
    this.dialogVisible = true
  }
}

vue实现表格的增

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

相关文章

vue的动画实现

vue的动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要通过内置组件和第三方库支持。 使用 Vue 内置过渡组件 Vue 的 transition 和 transition-group 组件可…

vue实现无线滚动列表

vue实现无线滚动列表

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

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。 安装依…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue实现缩放

vue实现缩放

Vue 实现缩放的方法 在 Vue 中实现缩放功能可以通过多种方式完成,以下是一些常见的方法: 使用 CSS transform 属性 通过 CSS 的 transform: scale() 属性可…