【发布时间】:2021-12-28 23:20:00
【问题描述】:
我有一个具有以下结构的单页应用程序。
|- App.vue
|- + Views
| |- Page.vue
|- + Components
| |- Slider.vue
编辑 1:感谢@gengar.value 的解决方案
我通过从Page.vue 传递参数解决了这个问题
methods: {
emitIndex: function (index) {
this.$router.push({
name: "visualization",
params: { imgCat: "visualization", imgIndex: index },
});
},
}
App.vue 包含路由Page.vue 的router-view 容器Slider.vue 是App.vue 的一个组件
我想将点击图像的索引和整个图像数据从Page.vue 传递给App.vue,然后再传递给Slider.vue,以实现Slider 与Page 的解耦以实现可重用性目的。
如何从Page.vue 也传递用户选择的索引App.vue
我尝试过使用params、props和emit但失败了。
示例Page.vue
<template>
<div v-for="(item, index) in 3" :key="index"></div>
</template>
<script>
export default ({
data() {
return {
urls: ['url1', 'url2', 'url3']
}
}
})
</script>
提前致谢
编辑 1:感谢@gengar.value 的解决方案
通过Page.vue 将参数推送到路由器并从Slider.vue 监听它解决了问题,如下所示:
Page.vue
methods: {
passIndex: function (index) {
this.$router.push({
name: "visualization",
params: { imgCat: "visualization", imgIndex: index },
});
},
}
Slider.vue
watch: {
"$route.params.imgCat": function (val) {
this.state = val;
},
"$route.params.imgIndex": function (newVal) {
if (newVal != -1) this.imgState = newVal;
this.$router.push({ params: { imgIndex: -1 } });
}
【问题讨论】:
-
你能用你的测试代码发布jsfiddle.net吗?
-
您好,不知道jsfiddle.net上如何添加路由和组件结构
标签: vue.js parameter-passing vue-router