收藏
回答

swiper闪屏


swiper闪屏,闪的很快,不是每次都能出现!时好时坏,最近才发现的问题,这是什么原因!


<scroll-view  class='main-banner'>

        <swiper style="height: 100%;" autoplay='true'  current="{{swiperCurrent}}" circular="true" bindchange="swiperChange">

            <block wx:for="{{bannerUrl}}" wx:key="{{this}}">

                <swiper-item>

                    <image src="{{item.bannerImageUrl}}" mode="scaleToFill"  class='img-res'></image>

                </swiper-item>

            </block>

        </swiper>

    </scroll-view>


最后一次编辑于  2017-08-16
回答关注问题邀请回答
收藏

8 个回答

  • LastLeaf
    LastLeaf
    2017-08-16

    这段逻辑会做两件事:

    1. 将this.data.swiperCurrent改为e.detail.current

    2. 通知视图更新swiper的current值

    主要是第1点:你要看看你的代码中是不是要读this.data.swiperCurrent,要不然会有影响。

    2017-08-16
    有用
    回复 1
    • 丫🌱
      丫🌱
      2018-06-20

      如果是需要呢

      2018-06-20
      回复
  • LastLeaf
    LastLeaf
    2017-08-16

    swiperChange的那段是不必要的。

    2017-08-16
    有用
    回复
  • LastLeaf
    LastLeaf
    2017-08-16

    你好,是不是在change的事件处理函数中用setData更新了current?

    2017-08-16
    有用
    回复 2
  • 丫🌱
    丫🌱
    2018-06-20

    求教怎么解决了,setData是需要的啊,设置图片下方轮播圆点的样式更换。

    2018-06-20
    有用
    回复 4
    • LastLeaf
      LastLeaf
      2018-06-20

      如果只是要更改其他数据,setData 设置的时候不要连同 current 一起设置。

      2018-06-20
      1
      回复
    • 丫🌱
      丫🌱
      2018-06-21回复LastLeaf

      但是如果需求有需要重置轮播图呢

      2018-06-21
      回复
    • LastLeaf
      LastLeaf
      2018-06-21
      1. tip: 如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则有可能导致 setData 被不停地调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起。


      https://developers.weixin.qq.com/miniprogram/dev/component/swiper.html

      2018-06-21
      回复
    • 丫🌱
      丫🌱
      2018-06-21回复LastLeaf

      这里我既用到了自动轮播也用到了手动触摸切换轮播图

      2018-06-21
      回复
  • 鲍红星
    鲍红星
    2017-08-16

    @LastLeaf    好的,谢谢你的悉心指导~

    2017-08-16
    有用
    回复
  • 鲍红星
    鲍红星
    2017-08-16

    @LastLeaf      哦,那我把这段删了,就可以了吧


    swiperChange: function (e) {

            var that = this

            that.setData({

                swiperCurrent: e.detail.current

            })

        }


    2017-08-16
    有用
    回复
  • 鲍红星
    鲍红星
    2017-08-16

    @LastLeaf   恩,又在onshow里重置了swiperCurrent

    swiperChange: function (e) {

            var that = this

            that.setData({

                swiperCurrent: e.detail.current

            })

        }


    onShow: function () {

            var that = this

            that.setData({

                swiperCurrent: '0'

            })

        }


    2017-08-16
    有用
    回复
  • 鲍红星
    鲍红星
    2017-08-16

    哪位大神知道这是什么情况,帮忙指导一下...

    2017-08-16
    有用
    回复
登录 后发表内容