-
是否设置的加载数据不够占满屏幕
List中的数据不够占满屏幕则会触发load事件,产生重复加载现象。可以将一次加载的数据量增大来解决此问题。
-
父级容器是否出现
overflow:scroll
的属性,去掉即可。
如果在 html 和 body 标签上设置了overflow-x: hidden
样式,会导致 List 一直触发加载。这个问题的原因是当元素设置了overflow-x: hidden
样式时,该元素的overflow-y
会被浏览器设置为auto
,而不是默认值visible
,导致 List 无法正确地判断滚动容器。解决方法是去除该样式,或者在 html 和 body 标签上添加height: 100%
样式。
-
是否使用了float布局
若 List 的内容使用了 float 布局,可以在容器上添加van-clearfix
类名来清除浮动,使得 List 能正确判断元素位置
<van-list>
<div class="van-clearfix">
<div class="float-item" />
<div class="float-item" />
<div class="float-item" />
</div>
</van-list>
-
loading变量赋值问题
排除了前面三种问题后,仍然无法解决,还是会多次触发load事件。可以考虑是否是loading变量赋值的问题,首先进入load事件直接给loading赋值为true,然后在ajax后获取成功后将loading赋值为false。最后在数据全部加载完成后将finished设置为true,即可。
onLoad() {
this.loading = true;
this.pageNum += 1; // 请求页数+1
this.getNotice() // 请求函数
// 在函数获取成功后设置 this.loading = false;
if (this.listLength === 0) { // 结束加载情况判断
this.finished = true
}
},