监听el-table滚动条,关闭表格中的el-select
时间: 2023-10-13 09:28:20 浏览: 179
你可以监听 el-table 的滚动事件,并在滚动时关闭表格中的 el-select。以下是一个可能的实现:
```html
<template>
<div class="table-container" @scroll="handleTableScroll">
<el-table ref="table" :data="tableData">
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column prop="age" label="Age"></el-table-column>
<el-table-column prop="gender" label="Gender">
<template slot-scope="scope">
<el-select v-model="scope.row.gender" :disabled="selectDisabled">
<el-option label="Male" value="male"></el-option>
<el-option label="Female" value="female"></el-option>
</el-select>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: 'John', age: 28, gender: 'male' },
{ name: 'Jane', age: 24, gender: 'female' },
{ name: 'Bob', age: 36, gender: 'male' },
// ...
],
selectDisabled: false
}
},
methods: {
handleTableScroll() {
// 获取表格容器元素和表格元素
const tableContainer = this.$refs.table.$el.parentNode
const table = this.$refs.table.$el.querySelector('.el-table__body-wrapper')
// 判断表格是否滚动到了底部
if (tableContainer.scrollTop + tableContainer.clientHeight >= table.scrollHeight) {
// 关闭 el-select
this.selectDisabled = true
} else {
// 打开 el-select
this.selectDisabled = false
}
}
}
}
</script>
```
在这个实现中,我们首先在 el-table 的容器元素上监听了滚动事件 `@scroll="handleTableScroll"`,然后在 `handleTableScroll` 方法中获取了表格容器元素和表格元素,并判断表格是否滚动到了底部。如果滚动到了底部,就将 `selectDisabled` 设置为 `true`,关闭所有 el-select 组件;否则,将 `selectDisabled` 设置为 `false`,打开所有 el-select 组件。最后,我们将 `selectDisabled` 绑定到所有 el-select 的 `:disabled` 属性上,以实现关闭或打开 el-select。
阅读全文