基于vue2.x实现loading bar(加载进度条)组件

在线演示地址Loading Bar

在这之前,我更新了有关一个单选框与复选框的组件实现,有兴趣的小伙伴也可以了解一下,今天我们来介绍一下loading bar 组件的实现原理。

加载进度条

实现思路

  • 整个组件ui部分有两部分组成,分别为顶部条形记载进度条,和spinner加载圈组成,整个部分包含在一个大的div里,并且通过fixed进行布局,然后我们通过定时器控制其增长,如果未结束,进度条会一直停留在最后的位置,等待end()事件的触发。如果end()事件触发,进度条加载结束,spinner停止旋转并且消失。
  • 因为可复用的关系,Loading Bar全局之后一个,我们通过this.$loading来操作实例。
  • 通过调用 $Loading 提供的三种方法来控制全局的加载进度条 start()end()error()

实现过程

  • ui部分以及样式
<template>
  <div class="w__loading-bar">
    <div
      class="w__loading-bar--bar"
      :class="isError ? 'w__loading-bar--error' : ''"
      role="bar"
      :style="{transform: 'translate3d(-'+(100-totalProgress)+'%, 0, 0)'}">
      <div class="w__loading-bar--peg"></div>
    <
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2.x 中,可以通过监听子组件的 `mounted` 钩子函数来判断子组件是否加载完成。具体实现方法如下: 1. 在父组件中引入子组件并注册: ```javascript <template> <div> <my-component @mounted="onChildMounted" /> </div> </template> <script> import MyComponent from './MyComponent.vue'; export default { components: { MyComponent }, methods: { onChildMounted() { console.log('子组件加载完成'); // 在这里可以进行后续操作 } } }; </script> ``` 2. 在子组件中触发 `mounted` 钩子函数: ```javascript <script> export default { mounted() { this.$emit('mounted'); } }; </script> ``` 这样就可以在父组件中监听到子组件的 `mounted` 事件,并进行后续操作了。如果子组件很多,你可以在监听到所有子组件加载完成后再进行后续操作,具体实现方法可以参考以下代码: ```javascript <template> <div> <my-component1 @mounted="onChildMounted" /> <my-component2 @mounted="onChildMounted" /> <my-component3 @mounted="onChildMounted" /> </div> </template> <script> import MyComponent1 from './MyComponent1.vue'; import MyComponent2 from './MyComponent2.vue'; import MyComponent3 from './MyComponent3.vue'; export default { components: { MyComponent1, MyComponent2, MyComponent3 }, data() { return { // 统计加载完成的子组件数量 loadedCount: 0, // 需要加载的子组件数量 totalCount: 3 }; }, methods: { onChildMounted() { this.loadedCount++; if (this.loadedCount === this.totalCount) { console.log('所有子组件加载完成'); // 在这里可以进行后续操作 } } } }; </script> ``` 这样就可以在所有子组件加载完成后进行后续操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值