elementUI自定义table多选

首先看下我的效果图


elementUI自定义table多选_第1张图片

需求

当选择某一行的时候要选择当前行,并且将当前行的用户数据显示在头部;如果已经选中,则取消选中效果同时删除头部对应的用户图像,当切换分页时如果头部已经有选中,则勾选对应的行,当编辑时,也要进行回显

原因

elementUI的table组件提供的toggleRowSelection方法不生效

实现

    a-首先放弃使用组件内置提供的seletion选项,使用插槽自定义


    b-当获取数据后,向自定义的选择框添加绑定事件


elementUI自定义table多选_第2张图片

        (使用jquery是因为原生的removeEventListener无法成功解绑事件,这会导致事件重复执行多次而渲染错误;当为激活状态时                                    使用active作为标记)

c-筛选el-table点击事件,使其只在点击选择框时触发,同时向头像框数据push或者delete


    (经过调试,当column.label不存在时,即表示点击多选框;actorsImgs就是用于显示图像的数据容器;activeRow则是内部记录的每一页的激活项)

d-当用户点击某个图像时,删除图像同时让对应多选框恢复为默认状态


elementUI自定义table多选_第3张图片

e-当用户分页时,记录当前激活的page,并在相等时激活当前页的已选中项



elementUI自定义table多选_第4张图片

    f-当为编辑时,首先需要获取当前行关联的用户;由于无法记录用户在那页有选中数据,因此需要手动计算



elementUI自定义table多选_第5张图片
elementUI自定义table多选_第6张图片

    (xb即计算出的当前页选中的变量)



至此,该功能实现完毕。(ps,如果有相同需求的小伙伴,能够使用el-table提供的方法,麻烦留个言。因为本人尝试了多次无效)



2021-1-30更新,本文章只提供实现思路,因为在交付测试过程中仍然有bug,但由于本人偏懒就不重新整理了

你可能感兴趣的:(elementUI自定义table多选)