Vue3實(shí)現(xiàn)Element Plus表格的多選功能與條件操作
前言
本文主要以Demo的形式展示,展示要點(diǎn)為主
基本知識(shí)點(diǎn)
數(shù)據(jù)綁定:
v-model 用于雙向綁定數(shù)據(jù),el-table 的 :data 屬性用于綁定表格數(shù)據(jù)選擇框列:
使用 el-table-column 的 type=“selection” 屬性來(lái)創(chuàng)建多選框列處理選擇變化:
@selection-change
事件用于處理選擇狀態(tài)變化,獲取選中的數(shù)據(jù)過(guò)濾和操作:
通過(guò)對(duì)選中的數(shù)據(jù)進(jìn)行過(guò)濾和處理,實(shí)現(xiàn)不同的操作需求
1. Demo
多選按鈕通常用于選擇表格中的多行數(shù)據(jù)
常用的 UI 框架如 Element Plus 提供了易于集成的多選功能
<template> <el-table v-loading="loading" :data="tableData" :stripe="true" :show-overflow-tooltip="true" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55" /> <el-table-column label="名稱" prop="name" /> <el-table-column label="狀態(tài)" prop="status" /> <el-table-column label="操作" fixed="right" width="200"> <template #default="scope"> <el-button @click="viewDetails(scope.row)">查看詳情</el-button> </template> </el-table-column> </el-table> <el-button @click="handleBatchAction">執(zhí)行批量操作</el-button> </template>
其js如下:
<script setup> import { ref } from 'vue'; import { ElTable, ElTableColumn, ElButton, ElMessage } from 'element-plus'; const loading = ref(false); const tableData = ref([ { id: 1, name: 'Item 1', status: '未提交' }, { id: 2, name: 'Item 2', status: '已提交' }, // ...更多數(shù)據(jù) ]); const selectedRows = ref([]); const handleSelectionChange = (selection) => { selectedRows.value = selection; }; const viewDetails = (row) => { // 顯示詳情 console.log('查看詳情:', row); }; const handleBatchAction = () => { if (selectedRows.value.length === 0) { ElMessage.warning('請(qǐng)選擇要操作的項(xiàng)'); return; } if (selectedRows.value.some(row => row.status !== '未提交')) { ElMessage.warning('只能對(duì)“未提交”狀態(tài)的記錄進(jìn)行操作'); return; } // 執(zhí)行批量操作 console.log('批量操作:', selectedRows.value); }; </script>
- 表格組件:el-table 組件用于展示數(shù)據(jù),type=“selection” 創(chuàng)建多選框列
- handleSelectionChange:處理選中項(xiàng)的變化,將選中的數(shù)據(jù)存儲(chǔ)在 selectedRows 中
- viewDetails:用于查看單條記錄的詳細(xì)信息
- handleBatchAction:處理批量操作的邏輯,包括檢查選中項(xiàng)的狀態(tài)是否符合條件(如狀態(tài)為“未提交”),然后執(zhí)行操作
2. 實(shí)戰(zhàn)
以上主要為了展示Demo的基本要點(diǎn)
對(duì)于實(shí)戰(zhàn)也同理
增加選項(xiàng)按鈕以及按鈕觸發(fā)
通過(guò)按鈕的選中收集相關(guān)信息
將列表的id以數(shù)組的形式傳輸給后端
(上面我多收集了一個(gè)status,不滿足的status可以在此處做過(guò)濾,讓其不會(huì)觸發(fā)按鈕框并且有提示)
結(jié)果如下:
基于上述的Demo以及實(shí)戰(zhàn)
通過(guò)按鈕做一鍵刪除 、修改等操作就很簡(jiǎn)單了
以上就是Vue3實(shí)現(xiàn)Element Plus表格的多選功能與條件操作的詳細(xì)內(nèi)容,更多關(guān)于Vue3 Element Plus表格多選與操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- vue3使用el-radio-group獲取表格數(shù)據(jù)無(wú)法選中問(wèn)題及解決方法
- vue3?element?plus?table?selection展示數(shù)據(jù),默認(rèn)選中功能方式
- 基于Vue3和Element Plus實(shí)現(xiàn)可擴(kuò)展的表格組件
- Vue3+Element Plus實(shí)現(xiàn)自定義彈窗組件的全屏功能
- vue3+js+elementPlus使用富文本編輯器@vueup/vue-quill詳細(xì)教程
- vue3 element plus中el-radio選中之后再次點(diǎn)擊取消選中問(wèn)題
相關(guān)文章
vue.js實(shí)現(xiàn)雙擊放大預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)雙擊放大預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06創(chuàng)建nuxt.js項(xiàng)目流程圖解
Nuxt.js是創(chuàng)建Universal Vue.js應(yīng)用程序的框架。它的主要范圍是UI渲染,同時(shí)抽象出客戶端/服務(wù)器分布。我們的目標(biāo)是創(chuàng)建一個(gè)足夠靈活的框架,以便您可以將其用作主項(xiàng)目庫(kù)或基于Node.js的當(dāng)前項(xiàng)目。2020-03-03vue項(xiàng)目ElementUI組件中el-upload組件與圖片裁剪功能組件結(jié)合使用詳解
這篇文章主要介紹了vue項(xiàng)目ElementUI組件中el-upload組件與圖片裁剪功能組件結(jié)合使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue項(xiàng)目fetch本地PAG格式文件404 NotFound的解決
這篇文章主要介紹了vue項(xiàng)目fetch本地PAG格式文件404 NotFound的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue實(shí)現(xiàn)獲取剪切板內(nèi)容的兩種方法
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)獲取剪切板內(nèi)容的兩種方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2025-02-02