uniapp中实现等待全部图片加载完毕再展示页面的效果:
时间: 2023-11-16 08:04:00 浏览: 985
页面加载等待效果
4星 · 用户满意度95%
在UniApp中实现等待全部图片加载完毕再展示页面的效果可以通过以下步骤:
1. 在页面的 `data` 中添加一个变量,用于表示图片是否加载完成,例如 `loadedImages: false`。
2. 在页面的 `onLoad` 生命周期方法中,获取页面中所有图片的数量,可以使用 `wx.createSelectorQuery()` 方法来获取页面中的所有图片元素,并统计数量。
3. 在每张图片的 `onLoad` 事件中,通过修改 `data` 中的 `loadedImages` 变量来记录加载完成的图片数量。例如,每次图片加载完成后,可以通过 `this.setData({ loadedImages: true })` 来设置 `loadedImages` 的值为 `true`。
4. 在页面的模板中使用 `v-if` 或者 `v-show` 来判断所有图片是否加载完成,如果加载完成,则展示页面内容。
下面是一个简单的示例代码:
```html
<template>
<view v-if="loadedImages">
<!-- 页面内容 -->
</view>
<view v-else>
<!-- 加载中提示或者占位图 -->
</view>
</template>
<script>
export default {
data() {
return {
loadedImages: false
};
},
onLoad() {
wx.createSelectorQuery()
.selectAll('img')
.boundingClientRect(rects => {
// 获取图片数量
const imageCount = rects.length;
let loadedCount = 0;
rects.forEach(rect => {
const image = rect.dataset.src; // 图片路径
wx.getImageInfo({
src: image,
success: () => {
loadedCount++;
if (loadedCount === imageCount) {
// 所有图片加载完成
this.loadedImages = true;
}
}
});
});
})
.exec();
}
};
</script>
```
这样,当页面中的所有图片加载完成后,`loadedImages` 变量的值将变为 `true`,从而展示页面内容。
阅读全文