uni-app中使用scroll-view滚到底部时多次触发scrolltolower

摘要:
属性名称类型默认值描述平台差异描述滚动xBoolean允许水平滚动yBoolean允许垂直滚动当上限阈值Number50远离顶部/左侧(以像素为单位)时,当其远离底部/右侧(以像素计)时,将触发滚动耦合器事件下限阈值Number5。

一、前言、scroll-view基本属性:

前言:

  前段时间使用scroll-view可滚动视图区域容器来做多个不同内容的展示(在我这个页面中同时使用了三个scroll-view做数据展示),因为这几个展示的内容的数据都比较的多,因此为了页面的数据加载顺畅决定使用上拉加载(简单的说就是数据分页显示)。

页面组成如下图所示:

uni-app中使用scroll-view滚到底部时多次触发scrolltolower第1张

scroll-view属性说明:

属性名类型默认值说明平台差异说明
scroll-xBooleanfalse允许横向滚动 
scroll-yBooleanfalse允许纵向滚动 
upper-thresholdNumber50距顶部/左边多远时(单位px),触发 scrolltoupper 事件 
lower-thresholdNumber50距底部/右边多远时(单位px),触发 scrolltolower 事件 
scroll-topNumber 设置竖向滚动条位置 
scroll-leftNumber 设置横向滚动条位置 
scroll-into-viewString 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素 
scroll-with-animationBooleanfalse在设置滚动条位置时使用动画过渡 
enable-back-to-topBooleanfalseiOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向微信小程序
show-scrollbarBooleanfalse控制是否出现滚动条App-nvue 2.1.5+
@scrolltoupperEventHandle 滚动到顶部/左边,会触发 scrolltoupper 事件 
@scrolltolowerEventHandle 滚动到底部/右边,会触发 scrolltolower 事件 
@scrollEventHandle 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY} 

二、问题:

       第一个考虑的上拉加载事件:onReachBottom页面滚动到底部的事件,常用于上拉加载下一页数据。但是如使用scroll-view导致页面级没有滚动,则触底事件不会被触发,所以这里存在的问题是有时候无法触发onReachBottom。

  最终选择了适用scroll-view自带的滚到底部触发事件scrolltolower事件,虽然这个事件确实能够实现上拉加载数据分页的功能,但是这个是事件存在两个问题。第一个问题就是当滚动条滚动到底部时会多次触发scrolltolower事件,第二个问题是当页面由第一个scroll-view(该页面已经到了的最底部了)切换到第二个scroll-view时会自动滚动到页面的最底部(即第二个页面默认已经到了最底部)。

数据加载多次如下图所示:

uni-app中使用scroll-view滚到底部时多次触发scrolltolower第2张

 三、解决方案:

关于页面到最底部多次触发scrolltolower事件解决:

       在scrolltolower触发事件中设定一个定时器setTimeout(callback, delay, rest),在指定的时间后执行注册的回调函数(简称防抖)。
代码如下所示(简单示例):

 <view>
                <scroll-view :scroll-top="scrollTop" scroll-y="true"   @scrolltoupper="upper" @scrolltolower="lower"
                @scroll="scroll">
                    <view   class="scroll-view-item uni-bg-red">A</view>
                    <view   class="scroll-view-item uni-bg-green">B</view>
                    <view   class="scroll-view-item uni-bg-blue">C</view>
                </scroll-view>
</view>
//滚动到最底部触发事件
lower() {
//在1s后执行一次该函数
setTimeout(() => {

//TODO这里填写你加载数据的方法
this.getData();

}, 1000);
},

关于页面由第一个scroll-view切换到第二个scroll-view时会自动滚动到页面的最底部:

  设置一个scrollTop设置竖向滚动条的位置,首先默认为0,当页面向下滚动会触发scroll-top事件从而改变scrollTop的值,当切换到第二个scroll-view时在默认设置scrollTop为0,那么在切换到第二个页面的同时页面的竖向滚动条的位置会默认滚动到最顶部,从而解决了默认滚动到最底部加载多次数据的问题。

代码如下所示(简单示例):

 <view>
                <scroll-view :scroll-top="scrollTop" scroll-y="true"   @scrolltoupper="upper" @scrolltolower="lower"
                @scroll="scroll" @click="changeScrollView">
                    <view   class="scroll-view-item uni-bg-red">A</view>
                    <view   class="scroll-view-item uni-bg-green">B</view>
                    <view   class="scroll-view-item uni-bg-blue">C</view>
                </scroll-view>
</view>
export default {
    data() {
        return {
            scrollTop: 0
        }
    },
    methods: {
    //滚动时触发事件
    scroll: function(e) {
    // console.log(e.detail.scrollTop);
        this.scrollTop = e.detail.scrollTop;
    },
   //切换scroll-view事件
   changeScrollView(){
        this.scrollTop=0;//回到最顶部
    },
   }
}

免责声明:文章转载自《uni-app中使用scroll-view滚到底部时多次触发scrolltolower》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springboot(十九)-线程池的使用H3C交换机修改时间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EXTJS4自学手册——EXT基本方法、属性(onReady、define、create)

1.Ext.onReady 说明:onReady内的语句块会在页面上下文加载后再执行 例子: <html><head><title>Index</title><link href="http://www.cnblogs.com/Scripts/ext-4.0.7-gpl/ext-4.0.7-gpl/...

网页仿 Office 2003 的工具条

网页仿 Office 2003 的工具条   [ 日期:2005-01-27 ]   [ 来自:网上摘录 ]<html><head><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content=...

bpc 数据处理

UJKT程序:UJO_SQE_TESTBADI:UJ_CUSTOM_LOGIC*XDIM_MEMBERSET Z_ACCOUNT = PL04 *START_BADI PL04_STEP1 WRITE = ON QUERY = ON *END_BADI *定义模型 types:begin of ty_planning, m...

C# SQLLite

1。从www.sqlite.org下载SQLite 3.3.4的版本   为了方便,把它解压了,就一个SQLite3.exe,放入Windows目录下。 Cmd 进入命令行   创建数据库文件:   >SQLite3 d:\test.db    就生成了一个test.db在d盘。这样同时也SQLite3挂上了这个test.db   查看可用命令  ...

宋浩《概率论与数理统计》笔记---1..1.1-1.1.3、概率论基本概念

宋浩《概率论与数理统计》笔记---1..1.1-1.1.3、概率论基本概念 一、总结 一句话总结: 1、随机试验 条件? 1、在相同条件下可重复 2、结果不止一个 3、无法预测 4、用字母E表示 2、事件、随机事件、基本事件、复合事件 分别是什么? 事件:每次随机试验的结果 随机事件:随机的事件,通常用大写字母ABC等来表示 基本事件:要看实验目的:相对于...

简写artTemplate模板一二

最近研发的项目当中,用到了artTemplate模板,在此简写一二,一来养成做笔记的习惯,二来习惯了做笔记。 一、展示模板 <div id='mySwipe'  class='swipe'><div id="content"></div></div> 二、存放模板 <script type="text/...