如何在vue-router路由期间展示进度条?
需求:
使用vue1.0、vux、vue-router,当路由切换期间,由于拉取数据的时候产生延时,为了让用户耐心地等待,打算使用progress组件告诉用户正在加载。
我的思路:
1.因为progress是全局都需要的,所以我把它放在全局组件的位置
2.当路由地址发生改变,在全局上使用router.beforeEach勾子来改变progress组件的数据:progress、show
3.组件树如下:
-RootApp
-progress
-View-Router(此处为Home)
我的思路遇到的问题:
如果是在全局上使用router.beforeEach,我不知道如何从全局上跟progress组件进行通信进而修改它的数值。
我的代码:
main.js
/*已经导入vue、vue-router*/
import app from "./components/App"
import progress from "vux/src/components/progress"
import Home from "./Home"
var router = new VueRouter();
Vue.component("progress", progress);
router.map({
'/': {
component: Home
}
});
router.beforeEach(function(transition){
// 如何跟progress组件通讯?
transition.next()
})
router.start(app, "#app");
App.vue
<div id="wrapper">
<progress :percent.sync="percent"></progress>
<router-view></router-view>
</div>
Home.vue忽略
欢迎回答以及提出新的思路
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 vue-router 文档,
因此可以使用
$loadingRouteData
在<template>
里面进行逻辑判断,具体如下:至于进度值,提供一点思路:
如果只是加载文件的话,可以自行写逻辑代码去判断加载文件的完成程度。
如果是 Promise 这种的话(比如 ajax 请求),进度条可以考虑跑个虚假值~