使用element-ui table expand展开行实现手风琴效果

写这篇博客的初衷:官网演示效果为点击toggle,已经展开的项不会因为其他项展开而关闭,所以延伸了下,扩展为手风琴效果。

根据留言反馈,新增了“修改操作栏文字”、“修改扩展栏内容”功能,完整代码传送门:https://github.com/Ele-Cat/element-expand

效果前瞻:

 

官网table expand地址:http://element-cn.eleme.io/#/zh-CN/component/table#zhan-kai-xing

先删减一下代码:

 1 
25 
26 

后台中,我们一般会点击按钮去展开查看详情,所以我们替换箭头为“查看详情”按钮,通过toggleRowExpansion方法展开合闭expand。效果如图:

使用element-ui table expand展开行实现手风琴效果_第1张图片

 

但是现在我们还没有实现手风琴效果,修改methods→toogleExpand方法:

1 toogleExpand(row) {
2   let $table = this.$refs.table;
3   this.tableData5.map((item) => {
4     $table.toggleRowExpansion(item, false)
5   })
6   $table.toggleRowExpansion(row)
7 }

table的toggleRowExpansion方法可以传两个参数,第一个参数传row,第二个参数传false,意思是合闭expand。我们把每行的expand关闭一次,再把对应的行打开,这样就实现了手风琴效果了。

新的问题,当我们点击打开了手风琴,每次都至少有一个是打开状态的,这样很明显是bug了,我们做一下让已打开行的expand合闭。

bug原因:当我们点击已打开的expand想关闭它时,相当于走了一遍$table.toggleRowExpansion(row, false)后,又走了一遍$table.toggleRowExpansion(row),所以这行的expand又被打开了。我们把“合闭/打开“的expand对应的行去除“合闭“操作。

修复toogleExpand方法:

1 toogleExpand(row) {
2   let $table = this.$refs.table;
3   this.tableData5.map((item) => {
4     if (row.id != item.id) {
5       $table.toggleRowExpansion(item, false)
6     }
7   })
8   $table.toggleRowExpansion(row)
9 }

需求结束。

后记:有时候,后台需求会很纷繁复杂,我们在使用别人造的轮子时要多研究多思考。

 

你可能感兴趣的:(使用element-ui table expand展开行实现手风琴效果)