收藏
回答

swiper组件的current属性通过JS设置无效


swiper current="{{current}}" duration="500" style="width:480px; height:200px" catchchange="bindchangeTag" >

  <block wx:for="{{imgUrls}}">

    <swiper-item>

       <image src="{{item.bgurl}}" catchtap="onMyclick"></image>

    </swiper-item>

  </block>

</swiper>


JS代码:

var dd=3;

 var imgUrls=[

       {bgurl:"../../image/itempic.jpeg"},

       {bgurl:"../../image/testimg/test00.jpg"},

       {bgurl:"../../image/itempic.jpeg"},

       {bgurl:"../../image/testimg/test01.jpg"},

       {bgurl:"../../image/testimg/test02.jpg"},

       {bgurl:"../../image/itempic.jpeg"},

       {bgurl:"../../image/testimg/test03.jpg"},

       {bgurl:"../../image/itempic.jpeg" },

       

    ]



 this.setData({

imgUrls:imgUrls,

current:dd

})

滚动视图,随便点进去,都显示第一张。就是说current:dd设置失败。


回答关注问题邀请回答
收藏

14 个回答

  • LastLeaf
    LastLeaf
    2016-12-23

    谢谢反馈。


    这个bug已经确认,具体表现是这样:如果同时更新current和swiper-item,那么current有可能会被错误更新。


    临时规避的方法是先设置好swiper-item,再设置current值。

    2016-12-23
    有用 1
    回复
  • 嘉祥
    嘉祥
    2016-12-26

    回12楼。我的swiper-item个数是不固定的,所以又有新问题。

    2016-12-26
    有用
    回复
  • 嘉祥
    嘉祥
    2016-12-26

    回复12楼。我的swiper-item个数是固定的。。。。。

    2016-12-26
    有用
    回复
  • 小时候很凶
    小时候很凶
    2016-12-24

    我的完美解决了,不需要二次调用,但是需要初始赋值。

    1.页面

    <swiper current="{{scrollToViewIndex}}">

        <block wx:for="{{dataList}}">

            <swiper-item>

                <template is="dailyTMPL" data="{{...item}}" />

            </swiper-item>

        </block>

    </swiper>



    2.JS

    Page({

        data: {

            dataList: [{}, {}, {}, {}],

            scrollToViewIndex: 0

        },

        onLoad: function(options) {

        ....

            this.setData({

                dataList: data, 

                scrollToViewIndex: options.index

            });

        }

    });



    这样就不需要两次设置值了,自从这个版本更新后,好多未设置初始值的地方都报错了

    好算我的swiper-item个数是固定的(都是4个),若是动态还是得二次设置current


    2016-12-24
    有用
    回复
  • 嘉祥
    嘉祥
    2016-12-23

    谢谢

    2016-12-23
    有用
    回复
  • 嘉祥
    嘉祥
    2016-12-23

    谢谢你的回答。解决了,这也问题是这个版本一更新就出来的,原来是直接设是可以的。

    2016-12-23
    有用
    回复
  • 小时候很凶
    小时候很凶
    2016-12-23

    以上问题自测应该就能搞定了,很早之前就出现的问题了 亲

    2016-12-23
    有用
    回复
  • 小时候很凶
    小时候很凶
    2016-12-23

    我的已解决你上述所有问题

    <swiper duration="{{swiperDuration}}" style="width:750rpx; height:{{dailyMainHeight}}" bindchange="handleSwiper" current="{{scrollToViewIndex}}">



    请注意 duration="{{swiperDuration}}"


    我的swiperDuration默认为0,意思就是说,首次切换swiper是没有动画过度的

    注意我的代码

    onReady的时候我又重置了swiper的动画 这样的话,只有第一次是无动画的swiper切换



    希望能帮到你


    2016-12-23
    有用
    回复
  • 嘉祥
    嘉祥
    2016-12-23

    我找到了问题所在,要二次设置才起作用。这样产生不好的效果就是,会从第一页,一直滚到要设置的显示的页面。

    2016-12-23
    有用
    回复
  • 小时候很凶
    小时候很凶
    2016-12-23

    额  我的是解决了 亲,

    我的逻辑是这样的 打开首页,点击条目调用组件

    index.wxml

    <navigator url="../daily/daily?index=1" class="index_nav">....</navigator>


    daily.wxml里面设置

    <swiper duration="{{swiperDuration}}" style="width:750rpx; height:{{dailyMainHeight}}" bindchange="handleSwiper" current="{{scrollToViewIndex}}">

        ....

    </swiper>


    daily.js里面设置

    Page({

        data: {

            scrollToViewIndex: 0

        },

        onLoad:function(options){

                var that = this;

                wx.getStorage({

                    ....

                  success:function(){

                        

                    that.setData({      

                        scrollToViewIndex: options.index

                    });

        

                        

                    setTimeout(() => {

                        that.setData({

                            scrollToViewIndex: options.index

                        });

                    }, 100);

        

                }


                })

        }


    });



    2016-12-23
    有用
    回复

正在加载...

登录 后发表内容