vue+mui轮播图

Posted on 2018-12-27 01:57  猫头唔食鱼  阅读(433)  评论(0编辑  收藏  举报

mui的轮播图,如果图片是请求来的,直接在html中循环是不会动的。

需要请求完图片之后,在setTimeout方法里,使用slider()方法,这样才会动

而且mui的轮播图,有点坑的,需要重复最后一张和第一张,才会无缝链接

<template>
  <div class="rotation">
    <div class="logo"></div>
    <div class="mui-slider">
      <!-- mui-slider-loop 这个类是控制循坏轮播的 -->
      <div class="mui-slider-group mui-slider-loop">
        <!-- 重复最后一张轮播图 -->
        <div class="mui-slider-item mui-slider-item-duplicate">
          <img :src="last">
        </div>

        <!-- 全部轮播图 -->
        <div class="mui-slider-item" v-for="(item,i) in rotations">
          <img :src="item.mpSlug" alt>
        </div>

        <!-- 重复第一张轮播图 -->
        <div class="mui-slider-item mui-slider-item-duplicate">
          <img :src="first">
        </div>
      </div>

      <!-- 轮播图小圆点 -->
      <div class="mui-slider-indicator">
        <div class="mui-indicator" v-for="(item,i) in rotations"></div>
      </div>
    </div>
  </div>
</template>
import { httpUrl } from "../../http/http.js";
export default {
  name: "Rotation",
  data() {
    return {
      rotations: [],
      first: "",
      last: ""
    };
  },
  methods: {
    getRotation() {
      var data = "type=main_info&" + "offset=0&" + "limit=-1";
      this.$axios.post(httpUrl.getContentsList, data).then(res => {
        console.log(res);
        this.rotations = res.data.rows;
        //第一张
        this.first = this.rotations[0].mpSlug;
        //最后一张
        this.last = this.rotations[this.rotations.length - 1].mpSlug;
      });
    }
  },
  created() {
    this.getRotation();
    //请求完成后再调用slider方法,由于axios里没有同步,所以使用setTimeout
    setTimeout(function() {
      //获得slider插件对象
      var gallery = mui(".mui-slider");
      gallery.slider({
        interval: 3000 //自动轮播周期,若为0则不自动播放,默认为0;
      });
    }, 300);
  }
};