swiper组件的current属性通过JS设置无效
发布于 5 年前 作者 ayuan 8970 次浏览 来自 问答

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设置失败。

10 回复

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

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

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


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

注意我的代码

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


希望能帮到你


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

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

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

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

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

谢谢反馈。

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

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

回1楼。多谢建议,社区搜索功能下个版本就能见到了。

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

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

回到顶部