当前位置:首页 > VUE

vue实现表格数据录入

2026-01-21 19:44:37VUE

Vue 实现表格数据录入的方法

基础表格数据绑定

使用 v-model 绑定表格输入框数据,配合 v-for 动态渲染表格行。适合静态数据结构或简单增删场景。

<template>
  <table>
    <tr v-for="(item, index) in tableData" :key="index">
      <td><input v-model="item.name" placeholder="姓名"></td>
      <td><input v-model="item.age" type="number" placeholder="年龄"></td>
      <td><button @click="removeRow(index)">删除</button></td>
    </tr>
    <button @click="addRow">新增行</button>
  </table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [{ name: '', age: '' }]
    }
  },
  methods: {
    addRow() {
      this.tableData.push({ name: '', age: '' })
    },
    removeRow(index) {
      this.tableData.splice(index, 1)
    }
  }
}
</script>

动态表单验证

结合 Element UIAnt Design Vue 的表格组件实现带验证的数据录入。以下以 Element UI 为例:

vue实现表格数据录入

<template>
  <el-table :data="tableData" border>
    <el-table-column prop="name" label="姓名">
      <template #default="{ row }">
        <el-input 
          v-model="row.name" 
          :rules="[{ required: true, message: '必填' }]"
        ></el-input>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template #default="{ $index }">
        <el-button @click="deleteRow($index)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
  <el-button @click="addNewRow">新增行</el-button>
</template>

复杂数据结构处理

对于嵌套对象或动态列的场景,可使用计算属性配合自定义组件:

export default {
  data() {
    return {
      columns: ['product', 'price', 'quantity'],
      items: [
        { product: '商品A', price: 10, quantity: 1 },
        { product: '商品B', price: 20, quantity: 2 }
      ]
    }
  },
  methods: {
    addItem() {
      this.items.push(
        this.columns.reduce((obj, col) => {
          obj[col] = col === 'quantity' ? 1 : ''
          return obj
        }, {})
      )
    }
  }
}

数据持久化方案

提交数据时进行深度校验并处理:

vue实现表格数据录入

methods: {
  submitData() {
    const invalidItems = this.tableData.filter(
      item => !item.name || !item.age
    )
    if (invalidItems.length) {
      alert('请填写完整信息')
      return
    }
    axios.post('/api/save', this.tableData).then(() => {
      alert('保存成功')
    })
  }
}

性能优化建议

对于大型数据集采用虚拟滚动方案:

<template>
  <RecycleScroller
    class="table-container"
    :items="tableData"
    :item-size="50"
    key-field="id"
  >
    <template #default="{ item }">
      <tr class="table-row">
        <td><input v-model="item.name"></td>
        <td><input v-model.number="item.value"></td>
      </tr>
    </template>
  </RecycleScroller>
</template>

关键点总结:

  • 基础实现使用 v-model + v-for
  • 生产环境建议使用 UI 库的表格组件
  • 动态列需特殊处理数据结构
  • 大数据量考虑虚拟滚动方案
  • 提交前做好数据验证和错误处理

分享给朋友:

相关文章

css表格制作表格

css表格制作表格

CSS 表格制作方法 使用 CSS 创建表格可以通过多种方式实现,包括原生 HTML 表格元素结合 CSS 样式,或者使用纯 CSS 布局技术(如 Flexbox 或 Grid)模拟表格效果。以下是常…

用css制作表格

用css制作表格

使用CSS制作表格 CSS可以用来样式化HTML表格,使其更具视觉吸引力和功能性。以下是几种常见的方法: 基础表格样式 通过CSS可以调整表格的边框、间距和颜色: <table>…

css制作三行三列表格

css制作三行三列表格

使用HTML和CSS创建三行三列表格 通过HTML的<table>标签结合CSS样式可以轻松实现三行三列的表格结构。 <table class="three-by-three"&…

vue表格实现复选框

vue表格实现复选框

Vue表格实现复选框的方法 基础实现(使用v-model绑定数组) 在Vue中可以通过v-model绑定数组来实现复选框功能。以下是一个基础示例: <template> <ta…

css表格制作

css表格制作

CSS表格制作方法 使用CSS创建表格可以通过多种方式实现,以下是常见的几种方法: 使用HTML原生表格标签结合CSS样式 <table class="styled-table">…

vue实现表格导入

vue实现表格导入

Vue 实现表格导入的方法 使用 Element UI 的 Upload 组件 Element UI 提供了 el-upload 组件,可以方便地实现文件上传功能。结合 xlsx 库解析 Excel…