【发布时间】:2019-10-20 18:57:21
【问题描述】:
我想从外部 API 加载我的路线。某些用户可能没有访问模块的权限。
所以我的导航栏会调用 API 并获取所有返回的模块。这些模块对象包含视图文件的路径。
我尝试创建一个小沙盒来重现问题
https://codesandbox.io/s/vue-routing-example-i5z1h
如果您在浏览器中打开此网址
https://i5z1h.codesandbox.io/#/First
你会首先得到以下错误
网址/第一个未找到
但点击导航栏中的第一个模块链接后,应该会呈现第一个视图。
我认为问题与页面加载后尚未启动导航创建事件有关,因此未找到模块页面。更改路由器 URL 后,导航组件有足够的时间将所有需要的路由添加到路由器。
如何在路由器引导至第一条路由并响应 404 错误之前加载这些 URL?
【问题讨论】:
-
这个问题的第一个答案可能对你有帮助:stackoverflow.com/questions/46341016/… 解决方案基本上是在路由加载后初始化Vue实例
-
谢谢西蒙,但我认为给定的示例使用与我没有相同的代码?我也使用
this.$router.addRoutes。你介意为Solution is basically to initialize the Vue instance after the routes have been loaded提供一个例子吗? -
@hrp8sfH4xQ4 你的路由器设置很不寻常。路由在
Navbar.vue中延迟添加。你为什么在router.js中设置路由而不是在router.js? -
@hrp8sfH4xQ4 在
router.js中设置路由时请参阅difference in behavior。
标签: vue.js vue-router