赞
踩
本文是为了记录曾经踩过的坑,愿以后的日子里不再踩坑
在vue中,el-table十分常用,有时会出现这样一种交互,就是表格中的某项大于xxx行时显示查看全部按钮,点击可以展开和收起,如下:
思路:
具体实现:
this.tableData = res.data || [];
tableData.forEach((item) => {
//通过$set给每一项添加一个属性displayCount
this.$set(item, 'displayCount', 8);
});
<template> <el-table :data="tableData"> ....... <el-table-column label="行数"> <template slot-scope="scope" v-if="scope.row.aaaList"> //这里是每行只展示一个aaaList里的item //遍历的list取的是这一行的0,到displayCount //这样就会根据displayCount的值不同而取到不同的长度的aaaList <p v-for="(item, index) in (scope.row.aaaList.slice(0, scope.row.displayCount))" :key="index"> {{item}} </p> //此处改变class,通过scope.row.aaaList.length来控制按钮的展示隐藏, //以便行数小于8 时不展示“查看全部”按钮 <el-button :class="[scope.row.aaaList.length <= 8 ? 'hideBtn' : '']" @click="scope.row.displayCount > 8 ? hideList(scope.row) : viewAll(scope.row)"> {{scope.row.displayCount > 8 ? '收起' : '查看全部'}} </el-button> </template> </el-table-column> ...... </el-table> </template>
// 样式
.hideBtn {
display: none;
}
methods: {
// 查看全部时,将所有都给到
viewAll(row) {
row.displayCount = row.aaaList.length;
},
// 收起多出部分时,只取前8条
hideList(row) {
row.displayCount = 8;
}
}
简单实现就这样啦,附aaaList格式,这样好理解些:
"aaaList": [
"这是第一行",
"这是第二行",
"这是第三行",
"这是第四行",
"这是第五行",
"这是第六行",
"这是第七行",
"这是第八行",
"这是第九行",
"这是第十行",
"这是第十一行",
"这是第十二行",
"这是第十三行"
],
不忘初心,方得始终~~喵~
由于小白一枚,所以急需大神指点~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。