ElementUI table自带的有一个highlight-current-row
的属性,但是只能单选。所以要实现点击行选中以及多选得自己实现.
目标:单击选中/取消, 按ctrl
键点击实现多选 ,按shift/alt
键实现连续多选。
实现效果
1. 监听row-click
事件,实现选中
2. 实现选中取消,以及单个选中
上面已经实现点击选中,但是会点击一行选中一行,所以要使用clearSelection
先清空之前选择的行,然后进行选择,取消选择首先要确定当前点击的行是否被已被选中,所以先监听selection-change
事件保存已选中行(或者使用$refs
获取内部保存的已选择行),以及使用row-style
给每一行添加唯一标识。
3. 按住ctrl
实现多选
首先要监听keydown
事件,以及keyup
事件,
4. shift/alt
键实现连续多选
这一步要通过rowIndex
判断已选择的行中最上面和最下面的是哪行,再对比按住shift/alt
点击的当前行得到新的最上面和最下面的行,把这两行中间的行进行循环选中。
5. 实现选中高亮
跟element-ui
本身的单选高亮实现方式一样,都是给选中行加上current-row
这个class
类,所以要使用row-class-name
这个属性(其实给每一行添加rowIndex
也可以用这个属性),判断方式也是通过判断rowIndex
对比
Demo及代码
https://codepen.io/lozvoe/pen/jgeKME