vue2+element-ui 实现下拉框滚动加载

一、自定义滚动指令。

VUE.directive(

'el-select-loadmore': {

bind(el, binding) {

const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')

SELECTWRAP_DOM.addEventListener('scroll', function () {

/**

* scrollHeight 获取元素内容高度

* scrollTop 获取或者设置元素的偏移值,常用于计算滚动条的位置,当一个元素的容器没有产生垂直方向的滚动条,那它的scrollTop值默认为0

* clientHeight 获取元素的可见高度

* 如果元素滚动到底,下面的等式返回true,没有则返回false

**/

const condition = (this.scrollHeight - this.scrollTop) <= (this.clientHeight + 10);

if (condition) {

binding.value();

}

})

}

}

})

二、绑定方法。

data() {

return {

adGroupList: \[\],

adGroupQuery: {

pageNum: 1,

pageSize: 10

},

typeTotal: 0,

selectLoading: false,

};

},

methods: {

// 获取后端数据

getAdGroupList() {

this.selectLoading = true

const params = {

page: this.adGroupQuery.currentPage,

pageSize: this.adGroupQuery.pageSize,

param: {

adGroup: this.adGroupQuery.adGroup

}

}

getAdGroupList(params).then(

response => {

this.selectLoading = false

this.adGroupList = ...this.adGroupList, ...response.result;

this.typeTotal = response.count

}

);

},

//下拉框搜索方法

remoteMethod(query) {

this.adGroupQuery.adGroup= query

this.adGroupQuery.pageNum = 1

this.adGroupList= \[\]

this.getAdGroupList()

},

//滚动加载

loadmore() {

if (this.typeTotal > this.adGroupList.length) {

this.adGroupQuery.pageNum++;

this.getAdGroupList();

}

}

},

三、组件绑定属性。

<el-select

v-model="form.materialId"

v-el-select-loadmore="loadmore"

placeholder="请输入AD组查询"

filterable

remote

clearable

:remote-method="remoteMethod"

style="width:100%">

<el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.id">

</el-option>

</el-select>

相关推荐
kaixin_learn_qt_ing2 分钟前
Electron程序---初体验
javascript·electron
星夜夏空995 分钟前
网络编程(5)—— Reactor实现(v1)
服务器·javascript·网络
YWL6 分钟前
OpenLayers测距测面:完整测量工具
前端·javascript·vue.js·信息可视化·openlayers
电子云与长程纠缠7 分钟前
UE5 Lyra PocketWorld进行3D内容UI预览 - 下
开发语言·学习·游戏·ui·ue5
zhanghaha131415 分钟前
HTML系列教程:2_HTML 编辑器(零基础超详细讲解
前端·编辑器·html
半旧51819 分钟前
【Java Web02】WEB服务器内部实现技术揭秘
java·服务器·前端
拿本唠嗑AI研究27 分钟前
现代前端架构爬虫指南:从静态页面到 React/Vue 单页应用
前端·爬虫·架构
独孤九剑打醒他1 小时前
【原创开源】双层Master‑Worker软硬协同调度架构:从根源解决分布式数据一致性难题
前端·嵌入式硬件·架构·前端框架·硬件工程
程序员黑豆6 小时前
Java包装类:基本类型与对象的桥梁
java·前端·ai编程
bugcome_com9 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json