gpt4 book ai didi

vue.js - Vue-router:改变其父 View 的子路由

转载 作者:行者123 更新时间:2023-12-04 04:19:30 24 4
gpt4 key购买 nike

我有一个父 View ,我在右 Pane 中显示了一个列表和一些元数据,当我在列表中单击它时,我想替换右 Pane 组件以显示特定的项目数据:

export default {
mode: 'history'
base: process.env.BASE_URL,
routes: [
{
path: "/list",
name: "list",
components: {
mainView: () => import("@/views/ListView"),
rightPane: () => import("@/views/ListMetadata")
},
children: [
{
path: ":itemId"
name: "item"
components: {
rightPane: () => import("@/views/ItemData")
}
}
]
}
]
}

我的模板看起来像:

<template>
<div id="app">
<div id="content">
<div id="rightPane">
<router-view name="rightPane"></router-view>
</div>
<router-view name="mainView"></router-view>
</div>
</div>
</template>

因此,当我从“列表”移动到“项目”时,我希望右侧 Pane 从 ListMetadata 更改为 ItemData。但实际上,ItemData 并没有被加载,我猜这是因为子路由“不知道”它的父 View 。我将“item”路由作为“list”子路由,这对我来说很有意义,因为它保留了主视图,并且路径只是用特定的 ID 扩展。

我说的对吗?你能建议一种实现它的方法吗?

最佳答案

正确的模板组合和路由配置应该是这样的:

/list                                                   /list/:itemId
+-----------------------------------+ +------------------------------+
| ListContainer | | ListContainer |
| +----------+--------------------+ | | +----------+---------------+ |
| | ListView | ListMetaData | | +------------> | | ListView | ItemData | |
| +----------+--------------------+ | | +----------+---------------+ |
+-----------------------------------+ +------------------------------+
<!-- App.vue -->
<template>
<div id="app">
<router-view />
</div>
</template>

<!-- ListContainer.vue -->
<template>
<div id="content">
<div id="rightPane">
<router-view />
</div>
<list-view />
</div>
</template>

routes:
[
{
path: "/list",
name: "list",
component: () => import("@/views/ListView"),
children:
[
{
path: '',
name: 'metaData',
component: () => import("@/views/ListMetadata"),
},
{
path: ":itemId"
name: "item"
component: () => import("@/views/ItemData"),
}
]
}
]

关于vue.js - Vue-router:改变其父 View 的子路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59747609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com