开始
每个list都加这个属性
loadtext:'上拉加载更多',
拿到上拉加载更多。
<!-- 上拉加载 -->
<view class="load-more">
{{item.loadtext}}
</view>
<style>
.load-more{
text-align: center;
color: #AAAAAA;
padding: 10upx;
}
</style>
.load-more{
text-align: center;
color: #AAAAAA;
padding: 15upx;
}
触底事件-上拉加载
<scroll-view scroll-y class="list" @scrolltolower="loadmore(index)">
先把上拉加载的文字给改了、有几种状态。
loadmore(index) {
this.newslist[index].loadtext="上拉加载更多";
this.newslist[index].loadtext="加载中...";
this.newslist[index].loadtext="没有更多数据了";
}
如果正在加载数据就直接返回
复制一份数据过来。注意setTimeout这里用的是箭头函数,用了箭头函数里面才可以用this这个对象。
把数据追加到数组里面
拉到底部
刷新到一条数据后,再拉到底部。一直加载中
下拉和上拉的时候,有这样弧度的效果。
如果不喜欢这个样式的话。
触底事件不触发的问题
uniapp scroll-view 触底事件scrolltolower不执行?
https://ask.dcloud.net.cn/question/79911
https://ask.dcloud.net.cn/question/89385
scroll-view这里设置高度100% 就触发了。
偶尔触发,偶尔不触发这个事件
uni-app中scroll-view不触发@scrolltolower事件(某些机型)
https://blog.csdn.net/weixin_44357065/article/details/121182206
最终解决
因为我们在onLoad的时候计算了swiper的高度并赋值
这样相当于在页面一加载就默认滚动到了最下面,然后触发一次触底事件进行了加载。
最最终解决方法
设置一个变量,默认滚动条高度为0
滚动条事件,随着滚动条的滚动触发scroll事件,然后给scroll-view的滚动条高度赋值。这样就解决了第一次必须要上拉刷新一次的问题。并且默认会显示在第一条数据的位置