一、前言
element-UI 的table表格数据有提供多项框 type=“selection” 的功能,但如果表格有分页功能,例如在第1页进行了数据勾选,等切换到其他页面,再回到第1页,勾选状态就不存在了。这是因为分页要重新请求后台数据,这样上一次请求的数据的勾选状态就不存在了。
element提供了reserve-selection可以保存数据更新前选中的值,这个属性需要搭配 row-key 指定一个唯一标识。
二、解决方法
1. 启用reserve-selection属性:在标签中设置reserve-selection=“true”。
2. 设置row-key:通过:row-key="getRowKeys"指定一个唯一标识符函数,该函数返回每行数据的唯一标识。例如:
<el-table
:data="tableList"
border max-height="250"
style="text-align:center;color: #000000;margin-top:10px;background:#f8f8f8;"
@select="select"
:row-key="getRowKeys"
>
<el-table-column type="selection" width="60" align="center" fixed
:reserve-selection="true">
</el-table-column>
</el-table>
JS部分:
methods:{
getRowKeys(row) {
return row.userId
// 需要return的是一个唯一的标识值
},
}
2.1、扩展
上面的row-key属性调用了一个getRowKeys方法,也有另一种写法:
<el-table
:data="tableList"
border max-height="250"
style="text-align:center;color: #000000;margin-top:10px;background:#f8f8f8;"
@select="select"
:row-key="(row)=>{return row.row_id}"
>
<el-table-column type="selection" width="60" align="center" fixed
:reserve-selection="true">
</el-table-column>
</el-table>
或者写为:row-key=“user_id”