element 中添加一个属性就可解决 el-select 和 el-cascader 等下拉项 不随页面滚动问题

本文详细介绍了如何在el-select、el-cascader和el-date-picker等前端组件中使用:popper-append-to-body属性,通过设置为false来避免弹出层定位问题,提升用户体验。

建议 :有popper-append-to-body 用这个属性 没有 就用append-to-body="false

一、 el-select 添 加 :popper-append-to-body="false"
二、 el-cascader 添 加 :append-to-body="false"
三、el-date-picker添 加 :append-to-body="false"
Element UI 中,`el-select` `el-table` 是两个独立的组件,分别用于下拉选择表格展示。为了实现一个结合两者功能的自定义组件(即“下拉表格”),需要利用 Vue 的自定义组件机制、插槽机制以及 Element UI 提供的 Popover 或 Dialog 等弹出层控件来构建。 ### 实现思路 1. **使用 `el-popover` 作为容器** 将 `el-table` 放置在 `el-popover` 中,并通过点击触发显示或隐藏表格。 2. **绑定选中值** 当用户在表格中选择某一行时,将该行数据同步到 `el-select` 显示框中。 3. **支持搜索与筛选功能** 可以在表格上方添加一个输入框,用于对表格数据进行过滤。 4. **支持分页** 若数据量较大,可以结合 `el-pagination` 实现分页加载[^4]。 --- ### 示例代码 以下是一个基础实现示例: ```vue <template> <div> <el-popover placement="bottom" width="500" trigger="click" v-model="visible" > <el-input v-model="searchQuery" placeholder="请输入关键字搜索" style="margin-bottom: 10px;" /> <el-table :data="filteredTableData" @row-click="handleRowClick"> <el-table-column prop="label" label="名称"></el-table-column> <el-table-column prop="value" label="编号"></el-table-column> </el-table> <el-button slot="reference" type="text">{{ selectedLabel || '请选择' }}</el-button> </el-popover> </div> </template> <script> export default { data() { return { visible: false, searchQuery: '', selectedValue: '', selectedLabel: '', tableData: [ { label: '选一', value: '1' }, { label: '选二', value: '2' }, { label: '选三', value: '3' }, // 更多数据... ] }; }, computed: { filteredTableData() { if (!this.searchQuery) return this.tableData; return this.tableData.filter(item => item.label.includes(this.searchQuery) || item.value.includes(this.searchQuery) ); } }, methods: { handleRowClick(row) { this.selectedValue = row.value; this.selectedLabel = row.label; this.visible = false; this.$emit('input', row.value); } } }; </script> ``` --- ### 扩展功能建议 - **远程加载数据**:可以通过 API 接口动态获取表格数据,并结合 `loading` 状态提升用户体验。 - **分页支持**:引入 `el-pagination` 组件,实现分页加载大数据集[^4]。 - **表单校验**:若需在表单中使用此组件,可封装为 Form Item 并支持 `rules` 验证规则[^3]。 - **自定义列渲染**:允许用户传入列配置对象,实现更灵活的列展示。 --- ### 总结 通过组合 `el-popover`、`el-table` `el-input` 等组件,可以构建一个功能丰富的下拉表格组件。进一步封装后,它可以在多个业务场景中复用,并支持搜索、分页、数据绑定等高级特性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值