【发布时间】:2023-01-04 15:46:58
【问题描述】:
我想添加加载微调器,直到未加载数据。为此,我创建了一个加载 component.vue
<template>
<div class="preloader" v-if="show">
<div class="spinner-border" style="width: 3rem; height: 3rem;" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</template>
<script>
export default {
name: "PreloaderComponent",
data: () => ({
show: true
}),
mounted(){
if(Boolean(this.show)) this.showToggle()
},
methods: {
showToggle(){
setTimeout(() => {
this.show = false
}, 1000)
}
}
}
</script>
<style lang="scss">
.preloader {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 1050;
background: rgba(0, 0, 0, .3);
display: flex;
align-items: center;
justify-content: center;
}
</style>
并将此组件视图导入我们的 dashboard.vue 中,以便在加载仪表板中的所有小部件后,微调器就会消失。但是通过添加此代码微调器不会在加载所有小部件后消失。 所以我正在寻找添加黑色微调器的解决方案,并在加载仪表板上的数据时稍微调暗背景,这应该适用于我们添加的所有未来 API 调用,所以我试图找到可以自动解决此问题的解决方案与 Vue。
找到一个解决方案,了解如何在仪表板中添加一个加载微调器,直到页面无法正确加载。在所有情况下,加载微调器只显示 1 秒;如果从 API 加载数据需要更长的时间,那么当数据尚未加载时,微调器可能会在 1 秒后消失。或者,如果数据加载速度非常快,用户可能会等待整整一秒完成。第一个问题更令人担忧,因为我们需要让微调器保持启动状态,直到所有内容都加载完毕。
【问题讨论】:
-
我会制作一个仅适用于 html 的加载器,这样你甚至不需要等待加载 vue。你可以把它放在
<div id="app"><!-- loader here --></div>里面。 Vue 会在加载时覆盖 div 中的内容 -
但它不起作用我的仪表板一半已加载一半仍在进行中。 @Lk77
-
那么当您不再需要它时,您将需要隐藏它/将其删除
-
我想要自动解决方案
-
我认为您的代码不正确,isAxiosRequesting 不是窗口的有效事件