el-autocomplet添加搜索滚动加载功能

微信公众号:前端程序猿之路
关注可了解更多的前端知识,反馈问题或建议,请公众号留言。
如果你觉得公众号内容对你有帮助,欢迎关注并转载[1]

el-autocomplet添加搜索滚动加载功能

代码如下:
1.使用el-autocomplete组件
 1<el-autocomplete
2                    v-model="name"
3                    :fetch-suggestions="querySearch"
4                    placeholder="请输入用户姓名"
5                    :trigger-on-focus="false"
6                    @select="handleSelect"
7                    v-scrollLoad="load"
8                >

9                    <template slot-scope="{ item }">
10                        <div>
11                            <span v-if="item.name">{{ item.name}}</span>
12                        </div>
13                    </template>
14                </el-autocomplete>
2.定义data
1data() {
2    name:'',
3    callback:'',
4
5}
3.自定义scrollLoad指令
 1directives:{
2        // 指令名称
3        scrollLoad:{
4            // 绑定事件  将指令绑定给DOM元素时执行一次,只执行一次
5            bind(el, binding, vnode){
6                let wrapDom = el.querySelector(".el-autocomplete-suggestion__wrap")
7                let listDom = el.querySelector(".el-autocomplete-suggestion__wrap  .el-autocomplete-suggestion__list")
8                wrapDom.addEventListener("scroll",(e)=>{
9                    let condition = wrapDom.clientHeight + wrapDom.scrollTop - wrapDom.scrollHeight
10                    if(condition >= 0 && !vnode.context.loading)
{
11                        //滚动到底部则执行滚动方法load,binding.value就是v-scrollLoad绑定的值,加()表示执行绑定的方法
12                        binding.value()
13                    }
14                },false)
15            },
16            // 虚拟DOM重新渲染时执行
17            update(el,bindings,vnode){
18
19            }
20        }
21    },
4.定义相关方法
 1    methods: {
2        querySearch(queryString, cb) {
3            if (cb) {
4                this.callback = cb
5            }
6            let params = {
7                pageIndex: this.pageIndex,
8                pageSize: this.pageSize,
9                trueName: this.name
10            }
11            //  请求接口
12            ......
13        },
14        handleSelect(data) {
15            ......
16        },
17        //滚动加载的代码
18        load(){
19            this.pageIndex = this.pageIndex + 1
20            this.querySearch()
21        }
22}

参考链接:
el-autocomplete实现滚动分页加载的方法:http://www.seozhijia.net/vue/196.html
搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop: https://www.imooc.com/article/17571

在这里插入图片描述
在这里插入图片描述
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值