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);
}
};