el-select数据过量懒加载(loadmore)

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中,
如许就处理了这个题目.

    原文作者:Ray_
    原文地址: https://segmentfault.com/a/1190000017812498
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞