【发布时间】:2018-08-22 21:46:45
【问题描述】:
我想在组件准备由 vue 路由器渲染时在应用根目录中显示一些加载动画。
已经找到this question,建议使用导航守卫,another question,其中接受的答案显示如何使用beforeEach 守卫在app 中设置变量,显示加载动画。
问题在于,在深度链接到某些路由时不起作用(初始 url 包含路由路径,例如 'someurl#/foo')。 beforeEach 守卫根本不会被调用。
所以我切换到加载组件的beforeRouteEnter 守卫,这也将允许我只显示某些组件的加载动画:
应用程序:
var app = new Vue({
el: '#app',
data: { loading: false }
router: router
});
组件:
var Foo = {
template: '<div>bar</div>',
beforeRouteEnter: function(to, from, next) {
app.loading = true; // 'app' unavailable when deep-linking
// do some loading here before calling next()...
next();
}
}
但后来我发现当深度链接到组件时,app 在beforeRouteEnter 中不可用,因为它在初始化过程的早期就被调用了。
我不想在应用数据声明中将loading 设置为true,因为我可能会决定在某个时候深度链接到另一个路由,其组件不需要加载动画。
【问题讨论】:
标签: vue.js vue-router