mui的轮播图片,在默认情况下是无法进行自动轮播的;只有在滑动或者拖动之后才能进行正常轮播;这里需要添加一个定时器,设定默认开始轮播的时间;
setTimeout(function(){
var gallery = mui('.mui-slider');
gallery.slider({
interval:1800//自动轮播周期,若为0则不自动播放,默认为0;
});
},300)
然而,初级的轮播是图片数量固定,但是轮播图片如果是从后台取值,且图片数量不定的情况下,又该如何轮播呢?有一种解决办法是用添加数组的方式,遍历json内图片的数量,然后一个一个将图片添加进数组进行图片dome的循环,这种方法,代码较多而且操作复杂;
这里提供一个更简单的方法,vue.js的v-for方法,不仅支持随机数量的轮播,而且在后台返回的json内图片只有一张的情况,则停止轮播,代码如下;
页面部分:
<div class="mui-slider ">
<div class="mui-slider-group mui-slider-loop">
<!--支持循环,需要重复图片节点-->
<div class="mui-slider-item mui-slider-item-duplicate" v-bind:class="{dispnone:isImgShow}">
<a @click="goToReceive(items[items.length-1])">![](imgLast)</a>
<button type="button" v-text="btnTextLast" @click="goToReceive(items[items.length-1])"></button>
</div>
<div class="mui-slider-item" v-for="item in items">
<a @click="goToReceive(item)">![](item.img)</a>
<button type="button" v-text="item.btnText" @click="goToReceive(item)"></button>
</div>
<!--支持循环,需要重复图片节点-->
<div class="mui-slider-item mui-slider-item-duplicate" v-bind:class="{dispnone:isImgShow}">
<a @click="goToReceive(items[0])">![](imgfrist)</a>
<button type="button" v-text="btnTextFrist" @click="goToReceive(items[0])"></button>
</div>
</div>
</div>
js部分:
vm.btnTextLast = common.getDict('btnType',vm.items[vm.items.length-1].displayType);
vm.btnTextFrist = common.getDict('btnType',vm.items[0].displayType);
// 图片数量为1时,不再轮播
if(vm.items.length == 1){
vm.isImgShow = false;
}else{
vm.imgfrist = vm.items[0].img;
vm.imgLast = vm.items[vm.items.length-1].img;
vm.isImgShow = true;
//获得slider插件对象
vm.imgCycle();
}
for(var i=0;i<vm.items.length;i++){
vm.items[i].btnText = common.getDict('btnType',vm.items[i].displayType);
}
如此,轮播图片不仅支持自动轮播,而且支持不固定数量图片无缝轮播,更是支持按钮变换v-text.
其中,vm代表this.函数imgCycle则是轮播定时器函数。
网友评论