Vue2 Element el-table多選表格控制選取的思路解讀
前言
構(gòu)建多選表格, 實(shí)現(xiàn)對監(jiān)聽選取狀況, 獲取當(dāng)前選中項(xiàng)行數(shù)據(jù), 獲取當(dāng)前所有選中項(xiàng).
一、構(gòu)建多選表格
構(gòu)建DOM結(jié)構(gòu), 在表格el-table
內(nèi)加一個特殊列即可, 將列類型type
屬性設(shè)置為selection
.
<el-table-column type="selection"> </el-table-column>
注意如果使用v-for
指令生成表格, 不要將上面這段代碼直接加在v-for
里, 不然每行旁邊都有一個選項(xiàng)列, 肯定是要分開的, 但是怎么分開的同時不拆表呢.
剛開始我嘗試過這種方案, 使用一個div
將需要遍歷生成的列包裹, 在div
上v-for
遍歷, 但el-table
仍然是基于HTML表格的封裝, 這就像往原生HTML表格的列外面套了div
, 會直接破壞表格結(jié)構(gòu).
我差點(diǎn)就忘了這是Vue2…直接把div
換成<template></template>
就好.
<el-table-column type="selection" width="55"> </el-table-column> <template v-for="(item, index) in billTableEvent"> <el-table-column :prop="item.props" :label="item.label" :align="item.align" :min-width="item.minwidth" v-if="item.props === 'payAmt'" :key="index" > <template slot-scope="scope"> {{ scope.row.payAmt }} </template> </el-table-column> <el-table-column :prop="item.props" :label="item.label" :align="item.align" :min-width="item.minWidth" :key="index" v-else > </el-table-column> </template>
二、多選表的事件、方法
剛開始的時候, 我覺得要是將el-table
提供的方法作為事件處理函數(shù), 那我豈不是可以同時操作一堆表格參數(shù), 會更簡單些?
然后根本拿不到值…
如果將el-table
的方法直接作為事件處理函數(shù), 那么該事件處理函數(shù)會被直接判定為一個普通的事件處理函數(shù), 并不能發(fā)揮到其應(yīng)有的作用, 應(yīng)當(dāng)通過事件拿到el-table
相關(guān)參數(shù), 然后在合適的地方調(diào)用el-table
提供的方法來協(xié)助達(dá)成目的.
獲取參數(shù)例:
methods: { handleSelectChange(selection) { this.multipleSelection = selection; console.log(selection); // [{...}, {...}] }, handleSelectAll(selection) { console.log(this.multipleSelection); console.log(selection); // [{...}, {...}] }, },
el-table
的事件處理函數(shù)內(nèi)除了可以使用事件本身攜帶的參數(shù), 還可以使用el-table
的方法, 事實(shí)上這些el-table
提供的方法可以在各種能調(diào)用函數(shù)的地方被調(diào)用, 并且它們各自接收固定的值作為參數(shù),
舉例官方的例子, 在表格外調(diào)用toggleSelection
:
但由于使用這些方法需要接收固定的參數(shù), 在el-table
的事件處理函數(shù)里調(diào)用它們可能會更方便一些.
<div id="empty"> <el-table ref="tableEBBA020M" :data="billData" @row-click="rowClick" @selection-change="handleSelectChange" > <el-table-column v-for="(item, index) in billTableEvent" :prop="item.props" :label="item.label" :align="item.align" :min-width="item.minwidth" v-if="item.props === 'payAmt'" :key="index" > <template slot-scope="scope"> {{ scope.row.payAmt }} </template> </el-table-column> </el-table> </div>
然后自己起一個事件處理函數(shù)名(額…至少要和事件相關(guān)), 在這個事件處理函數(shù)里面調(diào)用el-table
的方法.
methods: { rowClick(row) { // 單選 this.$refs.tableEBBA020M.toggleRowSelection(row); }, }
不需要去考慮太復(fù)雜的事情, 比如設(shè)立一個變量每次選中就+1偶數(shù)時選中奇數(shù)取消什么的(已經(jīng)開始難受了), 這些細(xì)化的事情Element已經(jīng)幫忙做好了, 完成后會直接把結(jié)果給你, 也就是事件所攜帶的各種參數(shù).
利用上面的方法拿到el-table
的selection
和row
, 配合一些數(shù)組方法就已經(jīng)可以完成大多數(shù)的多選表格控制.
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- vue2+element?ui?中的el-table?選中當(dāng)前行當(dāng)前行變色的實(shí)現(xiàn)代碼
- Vue2+Element-ui實(shí)現(xiàn)el-table表格自適應(yīng)高度的案例
- vue2+elementui的el-table固定列會遮住橫向滾動條及錯位問題解決方案
- VUE2.0+ElementUI2.0表格el-table循環(huán)動態(tài)列渲染的寫法詳解
- VUE2.0 ElementUI2.0表格el-table自適應(yīng)高度的實(shí)現(xiàn)方法
- vue2.0 + element UI 中 el-table 數(shù)據(jù)導(dǎo)出Excel的方法
- vue2使用el-tag實(shí)現(xiàn)自定義菜單導(dǎo)航標(biāo)簽
- vue2實(shí)現(xiàn)在el-table里插入el-tag的示例代碼
相關(guān)文章
vue-pdf實(shí)現(xiàn)文件在線預(yù)覽
這篇文章主要為大家詳細(xì)介紹了vue-pdf實(shí)現(xiàn)文件在線預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08vue設(shè)置路由title,但刷新頁面時title失效的解決
這篇文章主要介紹了vue設(shè)置路由title,但刷新頁面時title失效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06vue-cli-service serve報錯error:0308010C:digital enve
這篇文章主要介紹了vue-cli-service serve報錯error:0308010C:digital envelope routines::unsupported的解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06使用Vue+ElementUI動態(tài)生成面包屑導(dǎo)航教程
Vue和ElementUI都是非常流行的前端開發(fā)框架,它們可以讓我們更加便捷地開發(fā)前端應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于使用Vue+ElementUI動態(tài)生成面包屑導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2023-05-05vue登錄頁實(shí)現(xiàn)使用cookie記住7天密碼功能的方法
這篇文章主要介紹了vue登錄頁實(shí)現(xiàn)使用cookie記住7天密碼功能的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02elementUI同一頁面展示多個Dialog的實(shí)現(xiàn)
這篇文章主要介紹了elementUI同一頁面展示多個Dialog的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11vue3中Fragment特性的一個bug需要注意事項(xiàng)
這篇文章主要介紹了vue3中Fragment特性的一個bug,需要留意的注意事項(xiàng)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01