swiper 滑块视图容器
change事件中的source字段,表示触发change事件的原因,可能值如下:
值 | 说明 |
---|---|
autoplay | 自动播放导致的swiper切换 |
touch | 用户划动导致的swiper切换 |
"" | 其他原因将返回空字符串 |
请使用百度APP扫码
Page({
data: {
items: [
{
className: 'color-a',
value: 'A'
}, {
className: 'color-b',
value: 'B'
}, {
className: 'color-c',
value: 'C'
}
],
imgUrls: [
'https://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg',
'https://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg',
'https://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg',
'https://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg'
],
current: 0,
switchIndicateStatus: true,
switchAutoPlayStatus: false,
autoPlayInterval: 2000
},
console.log('swiperChange:', e.detail);
},
switchIndicate() {
this.setData({
switchIndicateStatus: !this.getData('switchIndicateStatus')
});
},
switchAutoPlay() {
this.setData({
switchAutoPlayStatus: !this.getData('switchAutoPlayStatus')
});
},
changeSwitchDuration(e) {
this.setData({
switchDuration: e.detail.value
});
},
changeAutoPlayInterval(e) {
this.setData({
autoPlayInterval: e.detail.value
});
},
animationfinish() {
console.log('animationfinish');
}
});
- Tip:如果在 bindchange 的事件回调函数中使用 setData 改变 current 值,则会导致 setData 被重复调用,因而通常情况下请在改变 current 值前检测 source 字段来判断是否是由于用户触摸引起的。
- Tip:其中只可放置 swiper-item 组件,否则会导致未定义的行为。
data: {
currentTab: 0,
swiperNav(e) {
console.log(e);
if (this.data.currentTab === e.target.dataset.current) {
return false;
} else {
this.setData({
currentTab: e.target.dataset.current,
})
}
},
swiperChange: function (e) {
console.log(e);
this.setData({
currentTab: e.detail.current,
})
}
})
<view class="swiper-wrap">
<swiper autoplay="auto" interval="5000" duration="500" current="{{swiperCurrent}}" bindchange="swiperChange" class="swiper">
<swiper-item s-for="{{slider}}">
<image src="{{item.imageUrl}}" class="img"></image>
</swiper-item>
</swiper>
<view class="dots">
<view s-for="{{slider}}" class="dot {{index == swiperCurrent ? ' active' : ''}}"></view>
</view>
</view>