当前位置:首页 > VUE

vue实现表格录入

2026-02-19 15:59:15VUE

Vue 实现表格录入的方法

使用 Vue 实现表格录入功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。

使用 v-for 动态渲染表格

通过 v-for 指令动态渲染表格行,结合 v-model 实现数据双向绑定。

<template>
  <table>
    <thead>
      <tr>
        <th>姓名</th>
        <th>年龄</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item, index) in tableData" :key="index">
        <td><input v-model="item.name" type="text"></td>
        <td><input v-model="item.age" type="number"></td>
        <td><button @click="removeRow(index)">删除</button></td>
      </tr>
    </tbody>
  </table>
  <button @click="addRow">添加行</button>
</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 UI 表格组件

如果项目中使用 Element UI,可以通过 el-tableel-input 实现更强大的表格录入功能。

<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="name" label="姓名">
      <template #default="{ row }">
        <el-input v-model="row.name"></el-input>
      </template>
    </el-table-column>
    <el-table-column prop="age" label="年龄">
      <template #default="{ row }">
        <el-input v-model="row.age" type="number"></el-input>
      </template>
    </el-table-column>
    <el-table-column label="操作">
      <template #default="{ $index }">
        <el-button @click="removeRow($index)">删除</el-button>
      </template>
    </el-table-column>
  </el-table>
  <el-button @click="addRow">添加行</el-button>
</template>

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

使用 Vuex 管理表格数据

对于复杂场景,可以通过 Vuex 集中管理表格数据。

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    tableData: [
      { name: '', age: '' }
    ]
  },
  mutations: {
    ADD_ROW(state) {
      state.tableData.push({ name: '', age: '' })
    },
    REMOVE_ROW(state, index) {
      state.tableData.splice(index, 1)
    },
    UPDATE_ROW(state, { index, key, value }) {
      state.tableData[index][key] = value
    }
  }
})
<template>
  <table>
    <tbody>
      <tr v-for="(item, index) in $store.state.tableData" :key="index">
        <td><input :value="item.name" @input="updateField(index, 'name', $event.target.value)"></td>
        <td><input :value="item.age" @input="updateField(index, 'age', $event.target.value)" type="number"></td>
        <td><button @click="removeRow(index)">删除</button></td>
      </tr>
    </tbody>
  </table>
  <button @click="addRow">添加行</button>
</template>

<script>
export default {
  methods: {
    addRow() {
      this.$store.commit('ADD_ROW')
    },
    removeRow(index) {
      this.$store.commit('REMOVE_ROW', index)
    },
    updateField(index, key, value) {
      this.$store.commit('UPDATE_ROW', { index, key, value })
    }
  }
}
</script>

实现表单验证

结合 Vuelidate 或 Element UI 表单验证功能,确保录入数据的有效性。

<template>
  <el-form :model="tableData" :rules="rules" ref="form">
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名">
        <template #default="{ row, $index }">
          <el-form-item :prop="`${$index}.name`" :rules="rules.name">
            <el-input v-model="row.name"></el-input>
          </el-form-item>
        </template>
      </el-table-column>
    </el-table>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      tableData: [{ name: '' }],
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' }
        ]
      }
    }
  }
}
</script>

通过以上方法,可以灵活实现 Vue 中的表格录入功能,根据项目需求选择合适的方案。

vue实现表格录入

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

相关文章

vue实现验证码

vue实现验证码

Vue 实现验证码的方法 使用第三方库 安装 vue-captcha 或 vue-recaptcha 等第三方库,这些库提供了现成的验证码组件,可以直接集成到 Vue 项目中。以 vue-recapt…

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rou…

vue路由实现

vue路由实现

Vue 路由实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现步骤和核心功能。 安装 Vue Router 通过…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <di…