上一篇用了后发现再次点击后就会掉值。突然想起可以直接传展开行的值,不用单独写一个值来传。就解决这个问题了。
直接看代码
这个是表格页的代码:
<el-table ref="tableList" :data="tableData" :row-key="row => row.id"
:expand-row-keys="expandRows" @expand-change="handleExpandChange">
<!-- 表格列定义 -->
</el-table>
export default {
data() {
return {
// 展开数组
expandRows: [],
};
},
methods: {
// 记录展开的id,存进this.expandRows
handleExpandChange(row, expandedRows) {
const Ids = []
expandedRows.forEach(element => {
Ids.push(element.id)
})
this.expandRows= Ids
console.log('展开的id,this.expandRows', this.expandRows)
},
// 跳转详情的函数,我用的params传递,详情页进行接收
goOperationRecard(index, row) {
// 这个是给详情页传id,可以不用看
this.$store.dispatch('pageData/setDevice', JSON.stringify(row.id))
// 主要是这个this.$router.push给详情页传expandRows
this.$router.push({ name: `OrderOperationRecard`, params: {
expandRows: this.expandRows
}})
},
// 获取表格列表的函数,在此进行接收详情页返回回来的展开的Ids
getFindListAll() {
//...获取表格的接口方法省略了...
this.expandRows = this.$route.params.expandRows
},
}
}
</script>
这个是详情页的返回函数的代码
goBack() {
// 返回函数,里面把接收到的expandedRowIds再传给表格页
this.$router.push({
name: 'OrderView',
params: {
expandRows: this.$route.params.expandRows
}
})
}