Element el-table的@current-change事件在切换分页的时候,获取到的currentRow为null
今天项目中遇到一个棘手的问题,想要实现的功能如下图
如果要获取到当前选中行的内容,首先要使用el-table的@current-change事件,事件中的currentRow参数即选中内容
问题现象
项目中出现的问题现象是,在第一页切换每一行都正常,右侧详细内容也能显示。但当选中某一行,点击分页的时候,就会报错。
报错原因:
经过问题排查,发现当切换分页,触发了el-pagination的@current-change事件
这个事件中的 “initList()" 根据当前页码重新加载了表格数据,表格数据发生了变化,因此当前表格选中的行肯定也发生了变化,所以又自动触发了el-table的@current-change事件。但是跳转到第二页的时候,并没有任何行选中,所以获取不到当前选中行的内容,所以这个事件的currentRow参数为null,也就导致了后续给右侧表格赋值时候报错的问题。
解决办法:
直接在el-table的@current-change事件中判断currentRow是否有内容,如果有内容存在再进行接下来的操作
注意
另外在选中当前行对其进行修改保存的时候,保存成功之后仍然需要手动选中该行
currentRow(currentRow, oldCurrentRow) {
if (currentRow) {
this.catch.currentRow = currentRow
}
},
if (this.catch.currentRow && this.LeftList.indexOf(c => c.ID == this.catch.currentRow.ID) >= 0) {
this.$refs.leftTable.setCurrentRow(this.catch.currentRow)
}
修改保存时,this.catch.currentRow用于存放之前选中的行内容,如果currentRow存在,并且左侧列表中某一行的id和currentRow中一致的id一致,则选中该行。选中某一行时,this.catch.currentRow用于存放当前行的内容
更多推荐
所有评论(0)