vue 用户输入搜索 与无限下拉


vue项目中,用户输入关键字搜索,并且手机端做无限下拉

watch: {
            'getListForm.searchKey'(val) { 
                        this.radioChange(); // 还有其他逻辑,内部调用getDeviceList
            }
        }

 

 1 getDeviceList() {
 2                 apiGetDeviceList(Qs.stringify(this.getListForm)).then(res => {
 3                     if (this.getListForm.pageNumber === 1) { // 搜索第一页 清空
 4                         this.deviceList = [];
 5                     }
 6                     this.deviceList.push(...res.list); // 数组合并
 7                     if (res.totalPage === 1 || res.totalPage < this.getListForm.pageNumber) {
 8                         this.loading = false;
 9                         this.finished = true;
10                     }
11                     this.loading = false;
12                     this.getListForm.pageNumber++;
13                 })
14             },

 

后来测试同学发现问题,当用户输入过快,网络缓慢的情况下,搜索结果不准确,由于上一次输入结果没有及时返回,导致多次插入数组

解决方案如下

1 watch: {
2             'getListForm.searchKey'(val) { // 判断用户停止输入 val值是为此次监控的值,但是input 绑定的this.getListForm.searchKey 却是双向输入,那么每隔500毫秒检测一次,直到用户停止输入
3                 setTimeout(() => {
4                     if (val === this.getListForm.searchKey) { 
5                         this.radioChange();
6                     }
7                 }, 500)
8             }
9         }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM