收藏
回答

如何在onPageScroll停止的时候再setData?

问题模块 框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
API和组件 小程序 需求 onPageScroll 微信iOS客户端 6.6.7 2.0.2
onPageScroll: function (res) {
  // Do something when page scroll
  this.setData({
    scrollTop: res.scrollTop
  })
},

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

最后一次编辑于  2018-06-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 游鹄君
    游鹄君
    2018-06-11

    微信官方说的可以在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,微信:游鹄君

    2018-06-11
    赞同 1
    回复 7
    • 程序猿-Mr.Zhang
      程序猿-Mr.Zhang
      2018-06-12

      老哥,你这种方法,touchEnd执行把switchBreak改为true的时候,onPageScroll也结束了,正好不能改变scrollTop的值,哈哈,后来受你启发,我用了下面的方法,不用onPageScroll了。



      touchEnd: function(event) {
          var that = this
          wx.createSelectorQuery().selectViewport().scrollOffset(function(res) {
            that.setData({
              scrollTop: res.scrollTop
            })
          }).exec()
        },


      2018-06-12
      回复
    • 星期二
      星期二
      2018-07-27回复程序猿-Mr.Zhang

      这样子安卓会有延迟。有跳动问题

      2018-07-27
      回复
    • 程序猿-Mr.Zhang
      程序猿-Mr.Zhang
      2018-07-27回复星期二

      没感觉  ==

      2018-07-27
      回复
    • 星期二
      星期二
      2018-07-27回复程序猿-Mr.Zhang

      你是IOS还是安卓?

      2018-07-27
      回复
    • 星期二
      星期二
      2018-07-27回复星期二

      你是IOS还是安卓?

      2018-07-27
      回复
    查看更多(2)
  • 乐天⁸⁸⁰⁰⁶⁶⁷🐳
    乐天⁸⁸⁰⁰⁶⁶⁷🐳
    2018-12-27

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

    2018-12-27
    赞同
    回复