返回

Vue+ELement实现增删改查与表单验证,一步提升开发效率!

前端

Vue+ELement 实现增删改查

简介

Vue.js 是一种流行的前端框架,以其简洁性和灵活性而著称。Element UI 是一个基于 Vue.js 的 UI 框架,提供了丰富的组件和样式,可帮助开发人员快速构建出美观、易用的界面。本文将指导您如何使用 Vue.js + Element UI 实现增删改查(CRUD)操作。

增删改查基本概念

增删改查是数据库操作的基本操作,包括:

  • 增 (Create): 在数据库中插入新的数据。
  • 删 (Delete): 从数据库中删除现有数据。
  • 改 (Update): 修改数据库中现有数据。
  • 查 (Retrieve): 从数据库中检索数据。

项目初始化

首先,创建一个 Vue.js 项目:

vue create project-name

然后,安装 Element UI:

npm install element-ui -S

引入 Element UI

main.js 文件中,引入 Element UI:

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

Vue.use(ElementUI)

创建数据模型

我们需要一个数据模型来存储数据。可以使用 Vuex 来管理数据状态:

const store = new Vuex.Store({
  state: {
    tableData: []
  },
  mutations: {
    setTableData(state, data) {
      state.tableData = data
    }
  },
  actions: {
    getTableData(context) {
      // 从服务器获取数据(根据实际情况修改)
      const data = [{ id: 1, name: '张三', age: 20 }, { id: 2, name: '李四', age: 25 }]
      context.commit('setTableData', data)
    }
  }
})

构建界面

App.vue 文件中,构建界面:

<template>
  <div>
    <el-table :data="tableData">
      <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>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: []
    }
  },
  mounted() {
    this.$store.dispatch('getTableData')
  }
}
</script>

实现增删改查

App.vue 文件中,实现增删改查操作:

<template>
  <div>
    <el-table :data="tableData">
      <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 type="primary" @click="handleEdit(scope.row)">编辑</el-button>
          <el-button type="danger" @click="handleDelete(scope.row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>

    <el-form ref="form" :model="form" label-width="80px">
      <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"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="handleCreate">创建</el-button>
        <el-button @click="handleReset">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [],
      form: {
        name: '',
        age: ''
      }
    }
  },
  mounted() {
    this.$store.dispatch('getTableData')
  },
  methods: {
    handleCreate() {
      // 从服务器创建数据(根据实际情况修改)
      const data = { id: 3, name: this.form.name, age: this.form.age }
      this.$store.dispatch('setTableData', [...this.tableData, data])
      this.handleReset()
    },
    handleEdit(row) {
      // 从服务器编辑数据(根据实际情况修改)
      const data = { id: row.id, name: this.form.name, age: this.form.age }
      this.$store.dispatch('setTableData', this.tableData.map(item => item.id === row.id ? data : item))
      this.handleReset()
    },
    handleDelete(row) {
      // 从服务器删除数据(根据实际情况修改)
      this.$store.dispatch('setTableData', this.tableData.filter(item => item.id !== row.id))
    },
    handleReset() {
      this.form = {
        name: '',
        age: ''
      }
    }
  }
}
</script>

表单验证

使用 Element UI 的表单验证功能:

<template>
  <div>
    <el-form ref="form" :model="form" :rules="rules" label-width="80px">
      <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"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="handleSubmit">提交</el-button>
        <el-button @click="handleReset">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        name: '',
        age: ''
      },
      rules: {
        name: [
          { required: true, message: '姓名不能为空', trigger: 'blur' },
          { min: 2, max: 10, message: '姓名长度必须在2到10个字符之间', trigger: 'blur' }
        ],
        age: [
          { required: true, message: '年龄不能为空', trigger: 'blur' },
          { type: 'number', message: '年龄必须为数字', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    handleSubmit() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          // 从服务器创建数据(根据实际情况修改)
          const data = { id: 3, name: this.form.name, age: this.form.age }
          this.$store.dispatch('setTableData', [...this.tableData, data])
          this.handleReset()
        }
      })
    },
    handleReset() {
      this.form = {
        name: '',
        age: ''
      }
      this.$refs.form.resetFields()
    }
  }
}
</script>

结论

通过使用 Vue.js + Element UI,我们可以轻松实现增删改查操作。这种方法提供了丰富的组件、美观的界面和灵活的验证功能,从而简化了前端开发流程。

常见问题解答

  1. 什么是增删改查操作?
    增删改查是数据库操作的基本操作,包括插入、删除、修改和检索数据。

  2. 如何使用 Vuex 来管理数据状态?
    Vuex 是一个状态管理库,可以帮助我们在 Vue.js 应用程序中管理数据状态。我们可以使用 Vuex 来存储和修改表格数据。

  3. 如何实现表单验证?
    Element UI 提供了表单验证功能,我们可以通过定义验证规则和使用 $refs.form.validate() 方法来实现表单验证。

  4. 如何从服务器获取和存储数据?
    我们可以在 `actions