业务场景:页面加载比较大的图片或者比较多的情况下,速度很慢用户体验不好,因此结合图片加载事件@load和element ui v-loading,由于在官方文档没有找到指令式v-loading怎么绑定多个布尔值,因为图片是循环的,然后就想到了通过dom去关闭弹层,然后再切换页码的时候重新加载弹层,以此反复
结构部分:
<ul class="fx fx-wrap">
<li class="img-cont" v-for="(item, index) in list" :key="index" @click="getDetail(item.id)" v-loading="imgLoading"
element-loading-text="拼命加载中..." element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 0, 0, 0.8)">
<img id="imgDom" @load="loadImg(index)" :src="item.imgUrl" alt="" />
</li>
</ul>
js:
data中定义
imgLoading: true
处理函数:
// 加载
loadImg(index) {
//隐藏元素去掉加载中
let imgCont = document.getElementsByClassName('img-cont')
imgCont[index].children[1].style.display='none'
},
// 分页触发事件
CurrentChange(current) {
let imgCont = document.getElementsByClassName('img-cont')
// 分页时重新渲染loading
for (let index = 0; index < imgCont.length; index++) {
imgCont[index].children[1].style.display='block'
}
this.pageNum = current;
this.getList();
},