vue實(shí)現(xiàn)動(dòng)態(tài)控制el-table表格列的展示與隱藏
本文實(shí)例為大家分享了vue動(dòng)態(tài)控制el-table表格列的展示與隱藏的具體代碼,供大家參考,具體內(nèi)容如下
1.引入el-table組件,這里我直接用官網(wǎng)的示例代碼
<template> ? ? <div class="page"> ? ? ? ? <el-popover width="60" trigger="click"> ? ? ? ? ? ? <el-checkbox-group v-model="columnSelecteds"> ? ? ? ? ? ? ? ? <el-checkbox v-for="item in columnHeaders" :label="item.title" :key="item.title" ></el-checkbox> ? ? ? ? ? ? ? ? </el-checkbox-group> ? ? ? ? ? ? <el-button slot="reference" icon="el-icon-more" circle style="margin-left: 100px;"></el-button> ? ? ? ? </el-popover> ? ? ? ? <el-table ? ? ? ? ? ? :data="tableData" ? ? ? ? ? ? ref="dataTable" ? ? ? ? ? ? stripe ? ? ? ? ? ? style="width: 100%"> ? ? ? ? ? ? <el-table-column v-if="columnHeaders[0].isShow" prop="date" label="日期"></el-table-column> ? ? ? ? ? ? <el-table-column v-if="columnHeaders[1].isShow" prop="name" label="姓名"></el-table-column> ? ? ? ? ? ? <el-table-column v-if="columnHeaders[2].isShow" prop="address" label="地址"></el-table-column> ? ? ? ? </el-table> ? ? </div> </template>
頁(yè)面效果圖:
2.數(shù)據(jù)綁定與監(jiān)聽(tīng)
<script> export default { ? ? name: 'ElTableTest', ? ? data() { ? ? ? ? return { ? ? ? ? ? ? // 表格數(shù)據(jù) ? ? ? ? ? ? tableData: [{ ? ? ? ? ? ? ? ? date: '2016-05-02', ? ? ? ? ? ? ? ? name: '王小虎', ? ? ? ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1518 弄' ? ? ? ? ? ? }, { ? ? ? ? ? ? ? ? date: '2016-05-04', ? ? ? ? ? ? ? ? name: '王小虎', ? ? ? ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1517 弄' ? ? ? ? ? ? }, { ? ? ? ? ? ? ? ? date: '2016-05-01', ? ? ? ? ? ? ? ? name: '王小虎', ? ? ? ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1519 弄' ? ? ? ? ? ? }, { ? ? ? ? ? ? ? ? date: '2016-05-03', ? ? ? ? ? ? ? ? name: '王小虎', ? ? ? ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1516 弄' ? ? ? ? ? ? }], ? ? ? ? ? ? //表頭信息 ? ? ? ? ? ? columnHeaders: [? ? ? ? ? ? ? ? ? {index: 0, title: "日期", isShow: true}, ? ? ? ? ? ? ? ? {index: 1, title: "姓名", isShow: true}, ? ? ? ? ? ? ? ? {index: 2, title: "地址", isShow: true} ? ? ? ? ? ? ], ? ? ? ? ? ? ? //已選擇的項(xiàng) ? ? ? ? ? ? columnSelecteds: ["日期","姓名", "地址"]? ? ? ? ? } ?? ? ? }, ? ? watch: { ? ? ? ? /** ? ? ? ? ?* @title 監(jiān)聽(tīng)列顯示隱藏 ? ? ? ? ?*/ ? ? ? ? columnSelecteds(newArrayVal) { ? ? ? ? ? ? // 計(jì)算為被選中的列標(biāo)題數(shù)組 ? ? ? ? ? ? var nonSelecteds = this.columnHeaders ? ? ? ? ? ? ? ? ? ? ? ? .filter(item => newArrayVal.indexOf(item.title) == -1)? ? ? ? ? ? ? ? ? ? ? ? ? .map(item => item.title) ? ? ? ? ? ? // 根據(jù)計(jì)算結(jié)果進(jìn)行表格重繪 ? ? ? ? ? ? this.columnHeaders.filter(item => { ? ? ? ? ? ? ? ? let isNonSelected = nonSelecteds.indexOf(item.title) != -1 ? ? ? ? ? ? ? ? if (isNonSelected) { ? ? ? ? ? ? ? ? ? ? // 隱藏未選中的列 ? ? ? ? ? ? ? ? ? ? item.isShow = false ? ? ? ? ? ? ? ? ? ? this.$nextTick(() => { ? ? ? ? ? ? ? ? ? ? ? ? this.$refs.dataTable.doLayout() ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? // 顯示已選中的列 ? ? ? ? ? ? ? ? ? ? item.isShow = true ? ? ? ? ? ? ? ? ? ? this.$nextTick(() => { ? ? ? ? ? ? ? ? ? ? ? ? this.$refs.dataTable.doLayout() ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }) ? ? ? ? } ? ? } } </script>
監(jiān)聽(tīng)到已選擇和未選擇的列,調(diào)用doLayout()方法對(duì)表格進(jìn)行重繪。
最終效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue3插槽:el-table表頭插入tooltip及更換表格背景色方式
- vue3?el-table結(jié)合seamless-scroll實(shí)現(xiàn)表格數(shù)據(jù)滾動(dòng)的思路詳解
- VUE2.0+ElementUI2.0表格el-table實(shí)現(xiàn)表頭擴(kuò)展el-tooltip
- VUE2.0+ElementUI2.0表格el-table循環(huán)動(dòng)態(tài)列渲染的寫(xiě)法詳解
- VUE2.0 ElementUI2.0表格el-table自適應(yīng)高度的實(shí)現(xiàn)方法
- 詳解vue結(jié)合el-table實(shí)現(xiàn)表格小計(jì)總計(jì)需求(summary-method)
相關(guān)文章
vue如何自動(dòng)化打包測(cè)試環(huán)境和正式環(huán)境的dist/test文件
這篇文章主要介紹了vue如何自動(dòng)化打包測(cè)試環(huán)境和正式環(huán)境的dist/test文件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06vue將秒數(shù)轉(zhuǎn)成"時(shí)分秒"格式實(shí)例代碼
在項(xiàng)目中,請(qǐng)求后臺(tái)接口返回的值是秒,這篇文章主要給大家介紹了關(guān)于vue將秒數(shù)轉(zhuǎn)成"時(shí)分秒"格式的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06vue監(jiān)聽(tīng)屏幕尺寸變化問(wèn)題,window.onresize很簡(jiǎn)單
這篇文章主要介紹了vue監(jiān)聽(tīng)屏幕尺寸變化問(wèn)題,window.onresize很簡(jiǎn)單,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10解決使用vue-awesome-swiper組件手動(dòng)滾動(dòng)點(diǎn)擊失效問(wèn)題
這篇文章主要介紹了使用vue-awesome-swiper組件手動(dòng)滾動(dòng)點(diǎn)擊失效問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06一文詳解Vue響應(yīng)式數(shù)據(jù)的原理
在vue2的響應(yīng)式中,存在著添加屬性、刪除屬性、以及通過(guò)下標(biāo)修改數(shù)組,但頁(yè)面不會(huì)自動(dòng)更新的問(wèn)題,而這些問(wèn)題在vue3中都得以解決,本文就給大家詳細(xì)的介紹一下Vue響應(yīng)式數(shù)據(jù)原理,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-08-08vue實(shí)現(xiàn)a標(biāo)簽點(diǎn)擊高亮方法
下面小編就為大家分享一篇vue實(shí)現(xiàn)a標(biāo)簽點(diǎn)擊高亮方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Vue?打包優(yōu)化之externals抽離公共的第三方庫(kù)詳解
這篇文章主要為大家介紹了Vue?打包優(yōu)化之externals抽離公共的第三方庫(kù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-06-06Vue使用echarts散點(diǎn)圖在區(qū)域內(nèi)標(biāo)點(diǎn)
這篇文章主要為大家詳細(xì)介紹了Vue使用echarts散點(diǎn)圖在區(qū)域內(nèi)標(biāo)點(diǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03