当前位置:首页 > 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 表单验证功能,确保录入数据的有效性。

vue实现表格录入

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

vue 实现挂载

vue 实现挂载

Vue 实现挂载的基本方法 在 Vue 中,挂载是将 Vue 实例与 DOM 元素关联的过程。通过挂载,Vue 可以管理 DOM 并实现数据绑定和响应式更新。 创建 Vue 实例并挂载 const…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue实现Pop

vue实现Pop

Vue 实现 Popover 组件的方法 使用 Vue 内置指令 v-show/v-if 和事件监听 通过 Vue 的指令和事件绑定实现基础的 Popover 功能。定义一个布尔值控制 Popover…

不用vue实现spa

不用vue实现spa

使用原生 JavaScript 实现 SPA 通过监听 URL 变化动态加载内容,结合 history.pushState 或 hashchange 事件实现路由切换。 // 路由配置 const…

vue 左右滑动实现

vue 左右滑动实现

Vue 实现左右滑动功能 使用 Vue 实现左右滑动功能可以通过多种方式完成,常见的有基于原生 JavaScript 事件监听、第三方库(如 Hammer.js)或 Vue 专用插件(如 vue-to…