el-select下拉加载(实现懒加载)

情况:项目出现了下拉数据量过大,出现页面卡死问题,反馈到我这;
当时实现思路1.使用render函数去渲染下拉框 
试了发现卡死情况依然存在,所以尝试方法2

2.使用原生js去添加下拉框的<option>
页面卡死情况没了,但是变成原生select,数据量大 很难找到对应的人 要下拉去找很久;
只能说不完美  没达到我预想。

百度了 发现一篇地址:https://segmentfault.com/a/1190000017812498?utm_source=tag-newest 下拉懒加载的操作,我就借鉴了 
实现代码:

<el-select

v-model="userId"

:filterable=‘true‘

:default-first-option=‘true‘

v-el-select-loadmore="loadmore"

placeholder="请选择用户">

<el-option

v-for="(item,index) in userItems"
:label="item.name"

:value="item.id"

:key="index"></el-option>

</el-select>

data(){

return {

userItems: [],//下拉数组

formData: {   //下拉参数

pageIndex: 1,

pageSize: 20

},
users:[]  //总数组

}

}

一个指令v-el-select-loadmore:

directives: {

‘el-select-loadmore‘: {

bind(el, binding) {

const SELECTWRAP_DOM = el.querySelector(

‘.el-select-dropdown .el-select-dropdown__wrap‘

);

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

const condition =

this.scrollHeight - this.scrollTop <= this.clientHeight;

if (condition) {

binding.value();

}

});

}

}

},

一个方法:loadmore

// 下拉加载

loadmore() {

this.formData.pageIndex++;

this.getUsers(this.formData);

},

getUsers(v) {

let num = ~~this.formData.pageIndex * ~~this.formData.pageSize;

this.userItems = this.users.filter((item, index, arr) => {

return index < num;

});

},

如此实现刚进页面显示前20条数据,往下滚动显示更多数据,就实现了懒加载。

还有几个待优化点:1下拉搜索是已加载的数据中找,而不是全部数据。2已选中未加载数据怎么办;

别的不多说 我去优化了。可能有后续,发现自己变懒了 博客变少了。

原文地址:https://www.cnblogs.com/wangxiaoer5200/p/10922005.html

时间: 2024-08-02 21:58:19

el-select下拉加载(实现懒加载)的相关文章

Ionic -- Refresher &amp; InfiniteScroll 下拉刷新与滚动懒加载

下拉刷新和滚动加载在移动端是很常见的需求,Ionic 为我们提供了开箱即用的组件.在这里我结合自己做的小demo简单介绍下. Template 在模板中需要将 ion-refresher 组件放置在 ion-content 内部的首位,将 ion-infinite-scroll 置于尾部. <ion-refresher (ionRefresh)="doRefresh($event)"> <ion-refresher-content pullingIcon="

[Android学习系列15]下拉刷新列表实现动态加载

使用google官方的SwipeRefreshLayout 参考: http://blog.csdn.net/easyer2012/article/details/22857807 http://stormzhang.github.io/android/2014/03/29/android-swiperefreshlayout/ http://www.eoeandroid.com/thread-330439-1-1.html http://www.oschina.net/translate/sw

Android如何定制一个下拉刷新,上滑加载更多的容器

前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉刷新和上滑,非常考验对android布局与父子触摸机制的功底,因此参考gitHub上的一个热门的下拉刷新项目 之所以选择他是因为它一个类就完成了所有View的适配,非常的精简强力. 需求 咱对下拉刷新.上滑加载更多的控件,需求如下: 1:下拉刷新,拖动到一定距离,提示文字变成 放手刷新 2:刷新完成

Javascript获取select下拉框选中的的值

现在有一id=test的下拉框,怎么拿到选中的那个值呢? 分别使用javascript原生的方法和jquery方法 <select id="test"  name="">     <option   value="1">text1</option>     <option   value="2">text2</option>    </select> co

vue 运用ElementUI,做select下拉框回显

第一.加载的顺序,应该先加载下拉框要选择的数据,然后在通过编辑查询数据后回显. 第二.要保证select下拉的ID和v-model里边的id保持一致. 第三.elementUI就会自动的将数据回显了. 一下是截图:

使用select下拉菜单筛选table表格内容

使用select下拉菜单筛选table表格内容:本章节介绍一下如何利用select下拉菜单对表单的内容进行筛选,如果数据量庞大,便于搜索使用的话,筛选效果还是非常有必要的,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/&qu

去除select下拉框默认样式

去除select下拉框默认样式 select { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ border: solid 1px #000; /*很关键:将默认的select选择框样式清除*/ appearance:none; -moz-appearance:none; -webkit-appearance:none; /*将背景改为红色*/ background:red; /*加padding防止文字覆盖*/ padding-right: 14px; } /*清除

点击select下拉框获取option的属性值

select下拉框作为前端开发者应该是经常使用的,最近在项目中遇到这样的情况,点击下拉框选项,需要获取所点击的option的属性值,当时想很简单啊,给option加一个点击事件不就行了,然后就加了一下,结果一运行悲催了,怎么点击option事件就是不会执行.这是为什么呢,刚开始也不懂,之前没遇到过这样的需求,后来经过学习,才恍然大悟,原来select option没有点击事件,要想获得所选option的属性值,需要通过jquery的change()方法来获取,下面通过代码解释一下,代码如下: <

美化select下拉菜单

默认的select下拉菜单不容易美化,很多UI是无法通过css更改的,所以要美化先更改结构,下面介绍的美化插件尽管代码各异,但大部分都将默认的下拉菜单转化成样式可控的元素,例如div.ul.span等,这样就可以用CSS尽情定制了. Chosen Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly. WooCommerce中的国家选择器很美观,这个脚本实现的效果与之完全相

vue select下拉框绑定默认值

vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当给select绑定了v-model的值的时候,要给v-model绑定的data值里写默认值