vuejs2 - 我可以直接将命名路由的标签传递给?
问题描述
说router.js
我有这样的事情:
const routes = [
{
path: '/',
name: 'home',
label: 'Start',
component: Home
}
]
然后在我渲染路由器链接的地方,我希望能够使用上面声明的备用标签属性,而不是手动输入它,并避免在其他地方定义它。我尝试了下面的一点,但它不起作用(虽然它适用于“路径”属性)
<router-link :to="{name: 'home'}">{{ this.$router.label }}</router-link>
编辑:我发现(显然!)this.$router
指的是当前的活动路线。
解决方案
至少现在,这是我的解决方案:
- 在
router.js
(或/router/index.js
在我的情况下)声明带有原始问题中所示标签的路线。并导出路由和路由器对象。
const routes = [
{
path: '/',
name: 'home',
label: 'Start',
component: Home
}
...
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export { router as default, routes };
- 在
main.js
导入变量和存储routes
时,您可以在任何地方检索它们。
import router, { routes } from '@/router'
Vue.prototype.routes = routes
new Vue({
router,
store,
vuetify,
render: h => h(App)
}).$mount('#app')
- 如果您想“渲染”路线链接(在我的情况下是导航栏布局),请执行此操作(在此处使用 vuetify):
<v-app-bar app color="secondary" dark>
<v-btn v-for="route in routes" :to="{name: route.name}" key='route.name' text rounded :exact="true">
{{ route.label }}
</v-btn>
</v-app-bar>
我确信这可以通过使用 Vuex(我仍在研究)来改进。
更新
找到了一个更好的解决方案,它不需要routes
导出/导入并将其分配给Vue.prototype.routes = routes
. 只需在要使用带有标签的路由数据的组件中执行此操作即可。模板部分(v-btn
等)保持不变。
<script>
export default {
name: 'LayoutNav',
data() {
return {
routes: this.$router.options.routes
};
}
};
</script>
推荐阅读
- rxjs - 当 RxJS observable 完成时,我如何执行异步代码?
- wordpress - 在 Wordpress 中获取与相同分类法相关的术语
- typescript - 在其他函数中调用异步函数
- javascript - 文档片段是否与 dom 元素占用相同的内存?
- amazon-sagemaker - 在 aws sage maker 中达到指标阈值后停止超参数调整 (HPO) 作业
- selinux - RStudio 服务器未在“强制”模式下使用 SELINUX 安全策略在 RedHat 8 上启动
- wordpress - 如何在产品 woo 商务上禁用悬停
- java - Junit Jupiter:如何更改缓存在测试类之外的 List 中的 mockito 模拟行为?
- html - 在标题中对齐两个 div 以尝试获得某个输出
- api - 为什么 td api 刷新令牌只能持续 30 分钟?