首頁  >  文章  >  web前端  >  如何透過vue和Element-plus實現資料的增刪改查功能

如何透過vue和Element-plus實現資料的增刪改查功能

WBOY
WBOY原創
2023-07-18 09:00:132165瀏覽

如何透過Vue 和Element Plus 實現資料的增刪改查功能

概述:
Vue 是一套用於建立使用者介面的漸進式框架,它與Element Plus 這個基於Vue 2.x的UI 元件庫結合,可以幫助我們快速建立具備資料增刪改查功能的介面。本文將介紹如何利用Vue和Element Plus實現資料的增刪改查功能,並給出對應的程式碼範例。

  1. 安裝和引入 Element Plus:
    首先,我們需要安裝和引入 Element Plus,這裡我們以 npm 的方式進行安裝。

首先,開啟命令列工具,並切換到專案目錄下。執行以下指令安裝Element Plus:

npm install element-plus --save

然後,在main.js 中引入Element Plus 的樣式和元件:

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

createApp(App).use(ElementPlus).mount('#app')
  1. 建立資料清單和表單元件:
    接下來,我們創建兩個元件來展示資料列表和表單。

在 src 目錄下建立 components 資料夾,並分別建立 List.vue 和 Form.vue 兩個檔案。

其中,List.vue 用來展示資料列表,包括表頭和資料行。 Form.vue 用於新增和編輯資料的表單。

List.vue 範例程式碼:

<template>
  <div>
    <el-table :data="data" border>
      <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 #default="{row}">
          <el-button type="text" @click="edit(row)">编辑</el-button>
          <el-button type="text" @click="del(row)">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  props: {
    data: {
      type: Array,
      default: () => []
    }
  },
  methods: {
    edit(row) {
      // 编辑逻辑
    },
    del(row) {
      // 删除逻辑
    }
  }
}
</script>

Form.vue 範例程式碼:

<template>
  <div>
    <el-form ref="form" :model="form" :rules="rules">
      <el-form-item label="姓名" prop="name">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="年龄" prop="age">
        <el-input v-model="form.age"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submit">提交</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        name: '',
        age: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' }
        ],
        age: [
          { required: true, message: '请输入年龄', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    submit() {
      // 提交逻辑
    }
  }
}
</script>
  1. 在父元件中使用List 和Form:
    在父元件中引入List 和Form,並使用它們展示資料列表和新增/編輯表單。
<template>
  <div>
    <List :data="list" />
    <Form />
  </div>
</template>

<script>
import List from './components/List.vue'
import Form from './components/Form.vue'

export default {
  data() {
    return {
      list: [
        { id: 1, name: '张三', age: '20' },
        { id: 2, name: '李四', age: '25' }
      ]
    }
  },
  components: {
    List,
    Form
  }
}
</script>

在父元件中,我們傳入包含資料的 list 陣列到 List 元件的 data 屬性中,然後在 List 元件中透過 v-for 循環渲染資料清單。

  1. 實作新增和編輯功能:
    在 List 元件的 methods 中,我們可以實作編輯和刪除資料的邏輯。具體實作方法如下:
edit(row) {
  // 编辑逻辑
  this.editingData = { ...row }
  this.showForm = true
},
del(row) {
  // 删除逻辑
  const index = this.data.indexOf(row)
  this.data.splice(index, 1)
}

在 Form 元件的 methods 中,我們可以實作新增和編輯資料的邏輯。具體實作方法如下:

submit() {
  // 提交逻辑
  this.$refs.form.validate((valid) => {
    if (valid) {
      // 表单验证通过
      if (this.editingData) {
        // 编辑数据
        const index = this.data.findIndex(item => item.id === this.editingData.id)
        this.data.splice(index, 1, this.editingData)
      } else {
        // 新增数据
        const id = Math.max(...this.data.map(item => item.id)) + 1
        this.data.push({ ...this.form, id })
      }
      this.resetForm()
    } else {
      // 表单验证未通过
      return false
    }
  })
},
resetForm() {
  // 重置表单
  this.editingData = null
  this.form = {
    name: '',
    age: ''
  }
  this.$refs.form.resetFields()
}

以上程式碼範例示範如何透過 Vue 和 Element Plus 實作資料的增刪改查功能。透過 List 元件展示資料列表,並透過 Form 元件實作新增和編輯資料的表單。利用父子元件間的通信,我們可以實現資料的傳遞和更新,從而實現資料的增刪改查操作。

以上是如何透過vue和Element-plus實現資料的增刪改查功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn