收藏
回答

微信小程序scroll-top事件和bindscroll事件冲突

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug scroll-view 工具 6.5.3(所有版本) 2.7.0
<scroll-view   style="height:100%;width:100%;" scroll-y="true" bindscroll="scrollFoods" scroll-top="{{scrollTop}}">
<view wx:for="{{goods}}" wx:for-item="item" class="food-list-hook">
<view class="cate">{{item.name}}</view>
<view class="food-item" wx:for="{{item.foods}}" wx:for-item="itemFoods">
<view class="icon" ><image src='{{base_url}}{{itemFoods.image}}' mode='aspectFill' /> </view>
<view class="content">
<view class="title">{{itemFoods.name}}</view>
<view class="desc">{{itemFoods.info}}</view>


</view>
</view>
</view>
</scroll-view>



/**
* 跳到某一个菜单元素
*/
scrollToMenu: function (e) {
var that = this;
let current = e.currentTarget.dataset.current;
let toViewString = 'menu-' +current;
console.log(current+""+toViewString);
that.setData({
currentIndex: current,
toView: toViewString,
scrollTop: that.data.foodListHeights[current]
});
},
/**
* 监听商品滚动事件
*/
scrollFoods: function (e) {
var that = this;
let currentY = e.detail.scrollTop;
console.log(that.data.foodListHeights);
for (let i = 0; i < that.data.foodListHeights.length - 1; i++) {
let heightBottom = that.data.foodListHeights[i];
let heightTop = that.data.foodListHeights[i + 1];
//对滑动后currentY值不足的情况进行修正
       let diff = Math.abs(currentY - heightTop);
//判断currentY当前所在的区间
       console.log(currentY+"heightTop:"+heightTop+"heightBottom:"+heightBottom);
if (currentY < heightTop && currentY >= heightBottom) {
let toViewString = 'menu-' + (i > 5 ? i - 5 : 0);
that.setData({
currentIndex: i,
toView: toViewString
           });
}
}
},


当点击左侧菜单时。。执行

scrollToMenu

。。。可是居然有时出触发到

scrollFoods

这个方法。。。

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

1 个回答

  • 是柿子啊
    是柿子啊
    05-20

    麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

    05-20
    赞同
    回复 7
    • MJ
      MJ
      05-21

      https://developers.weixin.qq.com/s/JhCnvwml7a8l

      05-21
      回复
    • 是柿子啊
      是柿子啊
      05-21回复MJ

      点击左边的时候,相当于也是改变了scroll的值,会触发

      05-21
      回复
    • MJ
      MJ
      05-21回复是柿子啊

      那为什么触发的值不一样。。。会有误差。。

      05-21
      回复
    • 是柿子啊
      是柿子啊
      05-21回复MJ

      scroll值误差?截图看下?

      05-21
      回复
    • MJ
      MJ
      05-21回复是柿子啊

      就我点击左边 设置scroll-top 值。。然后到触发

      scrollFoods

      滚动事件 时  获取的scroll-top 值 存在误差。。。

      05-21
      回复
    查看更多(2)