【发布时间】:2021-12-19 05:35:45
【问题描述】:
我正在尝试通过 <router-link> 标签传递 meta 字段。像这样:
<router-link :to="{path: '/inlineMeta', meta: {title: 'Inline meta'}}">
Inline meta
</router-link>
我想实现这一点,因为我可以从后端框架直接在标签本身上动态传递元数据。在 JS 文件中声明 routes 选项根本没有这种能力。
理论上,通过 to 属性传递的任何对象都应该被推送到router 堆栈,对吗?但在这种情况下,情况似乎并非如此。
如果我在routes 选项中声明meta,它肯定有效。毫无疑问。
我想知道是否可以这样做,我该怎么做?
一个小小提琴来说明问题。单击 URL 并注意控制台。我无法让 StackOverflow sn-p 正常工作。
Vue.use(VueRouter);
const cComponent = {
data() {
return {
fetchedData: null
}
},
template: `<div>The meta is: {{$route.meta.title}}</div>`,
}
const routes = [{
path: "/inlineMeta",
component: cComponent,
},
{
path: "/routeMeta",
meta: {
title: 'Meta declared in routes'
},
component: cComponent,
}
]
const router = new VueRouter({
mode: "history",
routes,
})
router.beforeEach((to, from, next) => {
console.log("The meta title is : " + to.meta.title);
})
const app = new Vue({
el: "#app",
router,
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<script src=" https://unpkg.com/vue-router@3.5.1/dist/vue-router.js"></script>
<div id="app">
<router-link :to="{path: '/inlineMeta', meta: {title: 'Inline meta'}}">Inline meta</router-link>
<router-link :to="{path: '/routeMeta'}">Meta declared in routes</router-link>
<router-view></router-view>
</div>
【问题讨论】:
标签: vue.js vuejs2 vue-component vue-router