当组件准备由 vue 路由器呈现时,我想在应用程序根目录中显示一些加载动画。
已经找到这个问题,建议使用导航守卫,还有一个问题,其中接受的答案显示了如何使用beforeEach守卫在 中设置变量app,显示加载动画。
问题是这在深度链接到某个路由时不起作用(初始 url 包括路由路径,例如“someurl#/foo”)。在beforeEach后卫根本不会被调用即可。
所以我切换到加载组件的beforeRouteEnter保护,这也允许我只显示某些组件的加载动画:
应用程序:
var app = new Vue({
el: '#app',
data: { loading: false }
router: router
});
Run Code Online (Sandbox Code Playgroud)
成分:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是后来我发现当深度链接到组件时,app在 中不可用beforeRouteEnter,因为它在初始化过程中很早就被调用了。
我不想在应用程序数据声明中设置loading …