swiper获取数据、css都没有问题,但是图片不动,应该怎么解决
分析原因:静态的swiper可以实现设置的功能,但在动态swiper中,swiper的功能无效了。 swiper的初始化在请求数据之前
解决方案:
1.nextTick(),用来解决DOM的先后执行问题
nextTick的原理在DOM更新完成后执行一个回调
Commons.signals.changeSwiper.add((mark) => {
_this.markInfo = mark //这块数据修改后,for循环会自动修改数据,但是并不会轮播,所以需要下边的代码重新渲染
if(mark.attachs && mark.attachs.length!=0){//没有数据不重新渲染
// DOM更新了
_this.$nextTick(() => {
_this.initSwiper()// swiper重新初始化
})
}
})
2.在swiper初始化的时候加上observer和observeParents这两个属性,控制属性
new Swiper('.swiper-container', {
pagination: '.swiper-pagination',
effect: 'coverflow',
grabCursor: true,
centeredSlides: true,
slidesPerView: 'auto',
loop:true,
initialSlide : _this.activeIndex,
observer:true,//修改swiper自己或子元素时,自动初始化swiper
observeParents:true,//修改swiper的父元素时,自动初始化swiper
coverflow: {
rotate: 50,
stretch: 0,
depth: 100,
modifier: 1,
slideShadows : true
},
on: {
slideChangeTransitionEnd: function(){
console.log(this.realIndex)
_this.activeIndex = this.realIndex;
},
}
});