如何在onPageScroll停止的时候再setData?
发布于 5 年前 作者 naxia 7923 次浏览 来自 问答
onPageScroll: function (res) {
  // Do something when page scroll
  this.setData({
    scrollTop: res.scrollTop
  })
},

这样做影响性能啊,而且没必要,如何在滚动结束的时候只进行一次setData???

2 回复

微信官方说的可以在page中定义一些特殊的函数,事件处理函数

而页面滚动事件被触发,说明是有用户在与页面产生交互,也就是会有手指按下和抬起的动作

所以我们可以在page的data中设置一个控制的开关switchBreak

data:

{

        switchBreak:false;

},

然后在视图层给页面盒子绑定 touchend 事件 touchend = “toEnd”,当手机触摸事件结束的时候,修改开关的状态

toEnd:function(event)

{

        this.setData(

        {

                 switchBreak:true;

        })

},

然后再页面滚动触发事件时将要执行的代码体之前先判断开关状态,true执行,false不执行

onPageScroll: function (res)

{

  先判断开关状态

  var that = this;

    if(that.data.switchBreak)

    {

           this.setData(

                    {

                        scrollTop: res.scrollTop
                     });

    }

 
},

关键的是要获取页面滚动结束时的触发的事件来设置开关状态.

这只是我的猜想,如果有不对的地方请指正.联系QQ:2900976495,微信:游鹄君

我也想知道,怎么判断页面滚动停止了,比如手上划页面滚动中,如何知道它停止了?

回到顶部