1***@qq.com
1***@qq.com
  • 发布:2022-02-23 16:06
  • 更新:2022-02-24 13:16
  • 阅读:575

【报Bug】APP端swiper的@transition监听bug

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: 正式

HBuilderX版本号: 3.2.16

手机系统: Android

手机系统版本号: Android 10

手机厂商: vivo

手机机型: 一加7

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
 <template>  
  <view>  
    <view class="banner">  
        <view class="swiper_content">  
            <swiper circular :autoplay="true" @transition="itemChange" :duration="1000" @change="swiperChange">  
                    <swiper-item v-for="(item, index) in banner_data" :key="index">  
                        <image :src="item" />  
                    </swiper-item>  
            </swiper>  
        </view>  
    </view>  
  </view>  
</template>  
<script>  
    export default {    
        data() {    
            return {  
                banner_data: [  
                    {  
            url: '../../static/index/swiper_bg.png'  
            }, {  
            url: '../../static/index/swiper_bg2.png'  
            }, {  
            url: '../../static/index/swiper_bg3.png'  
            }, {  
            url: '../../static/index/swiper_bg4.png'  
            }, {  
            url: '../../static/index/swiper_bg5.png'  
            }  
                ]    
            }    
        },    
        methods: {    
            change(e){},    
          itemChange(e) {  
        let data = parseInt(e.detail.dx);  
        console.log(data)  
       },  
            animationfinish({ detail: { current } }){}    
        }    
    }    
</script>   
<style lang="scss">  
    .banner {  
            width: 750upx;  
            height: 720upx;  
            overflow: hidden;  

            .swiper_content {  
                width: 750upx;  
                height: 720upx;  

                swiper {  
                    width: 750upx;  
                    height: 720upx;  

                    image {  
                        width: 750upx;  
                        height: 720upx;  
                    }  
                }  
            }  

            .swiper_dot_content {  
                display: flex;  
                flex-direction: row;  
                justify-content: center;  
                position: relative;  
                bottom: 20upx;  

                .swiper_dot {  
                    width: 8upx;  
                    height: 4upx;  
                    background: #FFFFFF;  
                    border-radius: 2upx;  
                    margin: 4upx;  
                }  

                .swiper_dot.current {  
                    background: #0BB908;  
                    width: 16upx;  
                }  
            }  
        }  
</style>  

操作步骤:

itemChange(e) {
let data = parseInt(e.detail.dx);
console.log(data)
},

预期结果:

每一次滚动的值应该一样

实际结果:

只有前面的滚动值一致,最后一项滚动回第一项时,dx的值小不一致。

bug描述:

swiper组件当最后一项swiper-item,滑动回第一个swiper-item时,@transition监听到的dx数值,跟第一项滑动到第二项、第二项滑动到第三项、第三项滑动到第四项.....的数值不一致。swiper的宽高皆为定值,图片的宽高也为定值,在页面位置也为定制,没有使用任何元素定位。

2022-02-23 16:06 负责人:DCloud_UNI_GSQ 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

  • 1***@qq.com (作者)

    升级为最新版本还是一样,swiper的@transition监听到最后一项滑动回第一项时,dx的数值与前面的不一致。

    2022-02-24 09:44

DCloud_UNI_Anne

DCloud_UNI_Anne

问题已确认,后续会优化,已加分,感谢您的反馈!

  • 9***@qq.com

    2023年3月9日,该bug还是没有修复吗,@transtion 事件中的 detail -> dx 给的值不对啊

    2023-03-09 08:40

  • YUANRJ

    回复 9***@qq.com: 什么平台?vue2还是vue3

    2023-03-16 14:35

该问题目前已经被锁定, 无法添加新回复