无限下拉

来源:9-6 店铺列表页前端的开发上

Joker4411416

2019-04-18

翔仔哥,这个地方不知道是我搞错了还是一个之前的一个没有更改的漏洞,因为我看您的代码里跟之前的不一样
if(total >= maxItems){
//加载完成,则注销无线加载事件,以防不必要的加载
.detachInfiniteScroll(.detachInfiniteScroll(.detachInfiniteScroll((’.infinite-scroll’));
//删除加载提示符
$(’.infinite-scroll-preloader’).remove();
}
在上面那段代码中,如果当前查询条件下,total>=maxItems,就注销无限加载事件,那么下次这个无限加载就失效了,比如我先加载了奶茶类别,total>=maxItems之后,无限加载事件就会被注销,那么我再查询其他类别就只能查询到每页的数量,不能继续下拉,因为无限加载事件已经在本次session会话中已经被注销了,或则是不是您的代码里有哪一个地方判断后又开启了无限加载,我回头大致看了下也没看见,下载的您的源码里面是这样写的
if (total >= maxItems) {
// 隐藏提示符
$(’.infinite-scroll-preloader’).hide();
} else {
$(’.infinite-scroll-preloader’).show();
}
改成这样我那个就不会在一次会话中无限加载只能生效一次了

写回答

2回答

翔仔

2019-04-20

访问量不大的话没太大问题,如果同学想比较完美处理这个问题,建议弄一个全局变量,类似

var needLoad = true;//这个是放在js文件开头哈,不是和下面连在一块
...
if (total >= maxItems) {
// 隐藏提示符
$(’.infinite-scroll-preloader’).hide();
needLoad = false;
} else {
$(’.infinite-scroll-preloader’).show();
needLoad = true;
}

之后再在加载的地方

if(needLoad == true){
   $.getJSON( ... 
}

这样就能防止访问后台

0
0

翔仔

2019-04-19

同学好,视频里面应该也是带着大家修改了,通过hide()和show()去控制,保证后续换到别的类目会重新继续加载,按照同学说的第一种方式的确就满足不了换类重新加载的需求。

0
1
Joker4411416
但是这样改是不是又有新的问题出现了,比如说你在同样的条件下查询店铺列表,加载完之后,把提示符隐藏掉,那在下拉的同时他还是会继续向服务器发送加载的请求,只不过所有的店铺都已经加载完成,不会有响应了,但是也会不必要的访问后台吧
2019-04-19
共1条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程