学小程序时写过一个B站demo,也遇到此问题,最后自定义Swiper的Dot来实现了。
思路是:用view组件重写dot,给swiper组件绑定bindchange事件用来获取当前第几个dot,动态改变class。
autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}">
data: {
// 是否显示面板指示点
indicatorDots: false,
// 是否自动切换
autoplay: true,
// 自动切换时间间隔
interval: 5000,
// 滑动动画时长
duration: 1000,
dotsClass: ['on','','','','']
},
swiperChange: function(event) {
var dotsClass = ['','','','',''];
dotsClass[event.detail.current] = 'on';
console.log( event.detail.current );
console.log( dotsClass )
this.setData({
dotsClass: dotsClass
});
}