Vue轮播图 实现根据数据动态添加页码

想要达到的效果:

假设轮播图单个slide(单页)内存在8组渲染数据,当数据存在9组的时候,slide会自动将第9组数据渲染到第二个slide下;

数据存在7“个”时:

数据存在10“个”时:

其中数据为定义的模拟数据,接下来是代码的实现过程:

1、使用swiper插件:vue-awesome-swiper(Github上搜索相对应插件)

2、下载插件到项目内:npm install vue-awesome-swiper@2.6.7 --save //(@x.x.x表示插件版本)

3、全局下(main.js)引入:

import VueAwesomeSwiper from 'vue-awesome-swiper'

import 'swiper/dist/css/swiper.css'

Vue.use(VueAwesomeSwiper, /* { default global options } */)

4:、渲染部分(html)是以组件形式实现的:

<template>
	<swiper class="two" :options="swiperOption" ref="mySwiper">
		<!-- slides -->
		<swiper-slide class="flx" v-for="(item,k) in arr" :key="k">
			<div v-for="item2 in item" class="imgurl">
				<img :src="item2.url" />
				<div>{{item2.text}}</div>
			</div>
		</swiper-slide>
		<div class="swiper-pagination" slot="pagination"></div>	<!-- 轮播图页面小点 -->
	</swiper>
</template>

5、逻辑层(js)部分:

<script>
    import 'swiper/dist/css/swiper.css'这里注意具体看使用的版本是否需要引入样式,以及具体位置。
    import { swiper, swiperSlide } from 'vue-awesome-swiper'
	export default {
		name: 'Homeswiper2',
		components: {
	      swiper,
	      swiperSlide
	   	},
		data() {
			return {
				list: [{
						'url': 'http://img1.qunarzz.com/piao/fusion/1803/95/f3dd6c383aeb3b02.png',
						'text': '景点门票'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1804/ff/fdf170ee89594b02.png',
						'text': '北京必游'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1804/5a/13ceb38dcf262f02.png',
						'text': '一日游'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1811/f6/e54fad3ea337b02.gif',
						'text': '年终大促'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1803/76/eb88861d78fb9902.png',
						'text': '动植物园'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1803/6c/9e54a8540fee0102.png',
						'text': '故宫'
					}, {
						'url': 'http://img1.qunarzz.com/piao/fusion/1803/fc/b10a6b2e4f0fe102.png',
						'text': '崇礼滑雪'
					}
				],
				swiperOption: {
					// some swiper options/callbacks
					// 所有的参数同 swiper 官方 api 参数
					pagination: {
						el: '.swiper-pagination',
					},
					spaceBetween:30,
					loop: false
				}
			}
		},
		computed: {
			arr(){
				let arr = []
					this.list.forEach((val,index)=>{            //遍历list内的数据
						const num = parseInt(index / 8)    //num相当于页码的索引值第0页,第一页...
						if(!arr[num]){
							arr[num]=[]                //判断arr[num]是否存在
						}
						arr[num].push(val)                //若存在将val(数据的内容)添加到arr内
					})
						return arr
			}
		}
	}
</script>

逻辑层代码运用到二维数组的思想:假设arr = [{1,2,3},{4,5,6}{7,8,9}],其中的数据1,2,3对应渲染到slide的第一页的内容,如果存在第四个数据,那么会分配到第二个slide内,以此类推。

以上是我个人的理解与实现,若有其它需要补充的,后续会更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值