vue swiper动态获取数据不滑动的解决方案

因为vue中更新 DOM 时是异步执行的,

data() {
		return {
			imgArray: [] //轮播图片
		}
	},
	created() {
		this.getImgArray()
	},
	mounted() {
		new Swiper('.swiper-container', {
			loop: true, // 循环模式选项
	
			// 如果需要分页器
			pagination: {
				el: '.swiper-pagination'
			},
			autoplay: true
		})
	},
	methods: {
		//获取轮播图片
		async getImgArray() {
			const res = await this.$http.get('/api/homecasual')
			console.log(res)
			this.imgArray = res.data.message.data
		}
	},

上面代码就是你在获取完数据之前,就已经实例化完成了,所以在等你渲染完dom,不会再实例化一遍了,所以这时候就需要用到nextTick这个函数了,这个方法通俗来说

$nextTick 通俗讲,页面渲染完成后才会调用的方法

所以我们要把上面的方法做一下改进,

data() {
		return {
			imgArray: [] //轮播图片
		}
	},
	created() {
		this.getImgArray()
	},
	mounted() {},
	methods: {
		//获取轮播图片
		async getImgArray() {
			const res = await this.$http.get('/api/homecasual')
			console.log(res)
			this.imgArray = res.data.message.data
		}
	},
	watch: {
		//监听轮播数据变化后再创建实例
		imgArray() {
			this.$nextTick(() => {
				new Swiper('.swiper-container', {
					loop: true, // 循环模式选项

					// 如果需要分页器
					pagination: {
						el: '.swiper-pagination'
					},
					autoplay: true
				})
			})
		}
	}

在watch上监听一下,如果imgArray发生了变化,我们再让他创建实例即可解决

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值