elementUI的table组件实现setCurrentRow的滚动条定位效果
时间: 2024-02-24 20:58:00 浏览: 208
element的el-table中记录滚动条位置的示例代码
当使用 `setCurrentRow` 方法设置当前行时,如果该行不在可见区域内,可以通过以下两种方式实现滚动条定位效果:
1. 使用 `$refs` 获取 table 组件的实例,然后调用 `scrollTo` 方法进行滚动条定位,示例代码如下:
```
<template>
<div>
<el-table ref="table" :data="tableData" @current-change="handleCurrentChange">
...
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
};
},
methods: {
handleCurrentChange(val) {
this.$nextTick(() => {
const table = this.$refs.table;
const row = table.$el.querySelector(`.el-table__row[data-index="${table.store.states.currentRow}"]`);
if (row && row.scrollIntoViewIfNeeded) {
row.scrollIntoViewIfNeeded();
} else {
table.scrollToRow(table.store.states.currentRow);
}
});
},
},
};
</script>
```
2. 在表格组件上使用 `ref`,然后在 `setCurrentRow` 方法中传递第二个参数 `{scrollIntoView: true}`,示例代码如下:
```
<template>
<div>
<el-table ref="table" :data="tableData" @current-change="handleCurrentChange">
...
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
};
},
methods: {
handleCurrentChange(val) {
this.$refs.table.setCurrentRow(val, {scrollIntoView: true});
},
},
};
</script>
```
以上两种方式均可实现滚动条定位效果,具体选择哪种方式可以根据实际情况选择。
阅读全文