JS实用功能-3、Vue中v-for配合使用Swiper插件问题

问题描述:

在一个页面中需要一个用swiper的轮播图,数据大概有40条,每一屏幕的swiper只显示其中的n条数据。

代码描述:

<div id="app">
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">
            a b c d e f g
            </div>
            <div class="swiper-slide">
            1 2 3 4 5
            </div>
        </div>
    </div>
</div>

 

图片描述直接上图:

思路:

使用双重for循环,把n个元素放到一个小组组,再把这些小组组合成一个大的数组。

实现:

首先模拟数据列表有11条,每个Swiper-slide放6条,计算需要Swiper-slide的公式如下:

reviewList: [
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言1'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言2'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言3'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言4'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言5'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言6'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言7'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言8'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言9'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言10'},
        {imgSrc: '../images/img.png',msg: '某某代表在大会上发言11'},
      ];
barNum =  reviewList.length / 6 === 0 ? reviewList.length / 6 : (reviewList.length / 6) + 1 ;

公式中的6代表的是需要在Swiper-slide中存放的条数。

第二步需要把数组拆分然后重组。让每6条或不足6条的组成一个数组。

var  barAry: [];
for(let i = 0; i < reviewList.length; i += 6){
        barAry.push(reviewList.slice(i, i + 6));
}

上面中6代表的是需要在Swiper-slide中存放的条数。组合成大数组的数据如下:

[
    [{
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言1"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言2"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言3"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言4"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言5"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言6"
    }],
    [{
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言7"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言8"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言9"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言10"
    }, {
        "imgSrc": "../images/img.png",
        "msg": "某某代表在大会上发言11"
    }]
]

 

最后是在v-for中实现:

<div class="swiper-container">
       <div class="swiper-wrapper">
            <div class="swiper-slide msg-content" v-for="value in barAry">
                  <div class="graphic" v-on:click="popInfo" v-for="value2 in value">
                      <img :src="value2.imgSrc" alt="">
                           <p>{{ value2.msg }}</p>
                    </div> 
             </div>
       </div>
 </div>

 

posted @ 2019-12-06 14:04  padding2020  阅读(2562)  评论(0编辑  收藏  举报
想了解更多的,大家也可以关注我的公众号:padding2020