el-select数据过多懒加载的解决(loadmore)


Posted in Javascript onMay 29, 2019

el-select数据过多处理方式

在日常项目中el-select组件的使用频率是非常之高的. 当数据过多时渲染时间非常长, 这里提供几个处理方式.

远程搜索

组件提供了远程搜索方式, 也就是按照你输入的结果匹配选项.

下拉懒加载loadMore

下拉懒加载, 当select滚动到底部时, 你再去请求一部分数据, 加入到当前数据中.

某组件中:

<template>
  <el-select
    v-model="value"
    placeholder="请选择"
    filterable
    multiple
    v-el-select-loadmore="loadmore"
  >
    <el-option
      v-for="item in options"
      :key="item.id"
      :label="item.label"
      :value="item.id">
    </el-option>
  </el-select>
</template>
 
export default {
  directives: {
    'el-select-loadmore': {
      bind(el, binding) {
        // 获取element-ui定义好的scroll盒子
        const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
        SELECTWRAP_DOM.addEventListener('scroll', function () {
          /**
          * scrollHeight 获取元素内容高度(只读)
          * scrollTop 获取或者设置元素的偏移值,常用于, 计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
          * clientHeight 读取元素的可见高度(只读)
          * 如果元素滚动到底, 下面等式返回true, 没有则返回false:
          * ele.scrollHeight - ele.scrollTop === ele.clientHeight;
          */
          const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
          if (condition) {
            binding.value();
          }
        });
      }
    }
  },
  data() {
    return {
      value: '',
      options: [],
      formData: {
        pageIndex: 1,
        pageSize: 20,
      }
    };
  },
  mounted() {
    this.getList(this.formData);
  },
  methods: {
    loadmore() {
      this.formData.pageIndex++;
      this.getList(this.formData);
    },
    getList(formData) {
      // 这里是接口请求数据, 带分页条件
      const _res = [1, 2, 3]; // 请求得到的数据
      this.options = [...this.options, ..._res];
    }
  }
};

这样就做到了滚动懒加载, 具体细节在应用时修改.

问题

这样渲染问题解决了, 随之会出现一个问题, 就是当你的value为选中的数据后, 分页数大的数据.

当页数小时, options数据中没有当前value的那一个, value就会显示为得到的id.

当你选中后你要保存下来当前的id以及lable, 下次过来时, 带入当前组件, 手动放在options中,这样就解决了这个问题.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
基于Jquery实现焦点图淡出淡入效果
Nov 30 Javascript
jquery密码强度校验
Dec 02 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
JS查找字符串中出现次数最多的字符
Sep 05 Javascript
js浏览器html5表单验证
Oct 17 Javascript
Vue.js第四天学习笔记(组件)
Dec 02 Javascript
浅谈jQuery中事情的动态绑定
Feb 12 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
vue2.0 datepicker使用方法
Feb 04 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
JS学习笔记之原型链和利用原型实现继承详解
May 29 #Javascript
vue读取本地的excel文件并显示在网页上方法示例
May 29 #Javascript
vue-cli3中vue.config.js配置教程详解
May 29 #Javascript
详解vue-cli3开发Chrome插件实践
May 29 #Javascript
vue里的data要用return返回的原因浅析
May 28 #Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 #Javascript
Javascript三种字符串连接方式及性能比较
May 28 #Javascript
You might like
基于文本的访客签到簿
2006/10/09 PHP
php 错误处理经验分享
2011/10/11 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
django rest framework之请求与响应(详解)
2017/11/06 Python
python机器学习之随机森林(七)
2018/03/26 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
质量月活动策划方案
2014/03/10 职场文书
奠基仪式主持词
2014/03/20 职场文书
董事长助理工作职责
2014/06/08 职场文书
单位在职证明书
2014/09/11 职场文书
行政助理岗位职责
2015/02/10 职场文书
护士医德考评自我评价
2015/03/03 职场文书
开会迟到检讨书范文
2015/05/06 职场文书