【发布时间】:2021-02-07 02:04:28
【问题描述】:
我是 Vue 初学者,我有一个问题:我有一个导航栏,我想要一些链接(如下所示的“Link2”)路由到同一个视图,但每个链接都有不同的值(1,2, 3),这样我就可以构建一个根据所选选项更新的轮播。
我不想要link2/:opt这样的路由,因为我无法在页面中刷新,我只想将链接选项绑定到查看文件。
我试图通过在路由器中使用元标记来实现这一点,然后在导航栏中更新每个选项单击时的元标记。我的问题是我无法读取视图中元标记的更改。无论我选择什么选项,我总是得到 Link2 - option1。
路由器/index.js
{
path: '/link2',
name: 'link2',
component: () => import('@/views/Link2.vue'),
meta: { slide: '1' },
}
Navbar.vue:
methods: {
goRoute: function(url, opt) {
this.$route.meta.slide = opt;
//value of opt is correct here(1,2,3)
console.log(this.$route.meta.slide);
this.$router.push(url).catch((error) => {
if (error.name != 'NavigationDuplicated') {
throw error;
}
});
}
Link2.vue - 我想读取每个选项的值:
<template>
<h1 class="mt-12">Link2- option{{ slide }}</h1>
</template>
<script>
export default {
name: 'Link2',
data() {
return {
slide: 0,
};
},
watch: {
'$route.meta.slide': function(newValue) {
this.slide = newValue;
},
},
created() {
this.slide = this.$route.meta.slide;
},
};
</script>
我错过了什么?有没有更好的解决方案? 提前致谢!
【问题讨论】:
-
为什么无法刷新会阻止您使用参数?
-
是否可以使用参数?基本上每个选项,我想留在路线 /link2 ,但更改视图中的幻灯片值。如果我第一次进入路线,我想在 /link2 中滑动=1,如果我已经在路线中并单击其他选项,只需更新滑动值
-
是的,这就是 params 的用途。目前尚不清楚您为什么不想使用它们,但我会发布一个答案,告诉您无论如何。
标签: javascript vue.js vuejs2 vue-component vue-router