vue element el-select下拉滚动加载的方法
别拿曾经看以后~ 人气:0使用vue+element的el-select下拉框加载返回数据太多时,会造成卡顿,用户体验欠佳,记录一个滚动加载的方法:
1、挂载一个全局的方法(main.js):
// 滚动加载更多 Vue.directive('loadMore', { bind(el, binding) { // 获取element,定义scroll let select_dom = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap'); select_dom.addEventListener('scroll', function () { let height = this.scrollHeight - this.scrollTop <= this.clientHeight; if (height) { binding.value() } }) } });
2、demo设置(template结构)
<template> <el-form-item label="所属分类"> <el-select v-model="curr" placeholder="分类" @change="change" v-loadMore="loadMore" clearable filterable> <el-option v-for="item in list" :key="item.id" :label="item.name" :value="item.value"> </el-option> </el-select> </el-form-item> </template>
3、字段设置(data)
data(){ return { curr:'', names:[], list:[], pageData: { index: 1, size: 100 }, } },
4、事件方法(methods)
methods:{ // 加载更多 loadMore() { this.pageData.index++; this.sceneData(this.pageData); }, // 请求数据 async sceneData(){ let self=this this.names= []; // 清空 let num = this.pageData.index * this.pageData.size; const {data,code,message}=await apiList({}); if(code===0){ self.names= data self.list= self.id.filter((item, index, arr) => { return index < num; }); } }, }
加载全部内容