【发布时间】:2017-01-20 04:52:38
【问题描述】:
我正在使用 vue-router 并且有关于 subRoutes 的问题。我想设置我的路线,所以主要路线是列表,子路线是诸如编辑/添加/等之类的东西。
我希望子路由组件替换父路由的<router-view>。我理解文档的方式和我测试的内容,看起来我应该在父组件模板中定义另一个 <router-view> 以供子路由呈现,但用户列表将保持可见。
示例路线:
'/users': {
name: 'user-list',
component(resolve) {
require(['./components/users.vue'], resolve)
},
subRoutes: {
'/add': {
name: 'add-user',
component(resolve) {
require(['./components/users_add.vue'], resolve)
}
}
}
}
主路由器视图:
<!-- main router view -->
<div id="app">
<router-view></router-view>
</div>
用户列表:
<template>
<a v-link="{ name: 'add-user' }">Add</a>
<ul>
<li>{{ name }}</li>
</ul>
</template>
添加用户:
<template>
<div>
<a v-link="{ name: 'user-list' }">back</a>
<input type="text" v-model="name">
</div>
</template>
当我点击“添加”时,我想填写添加用户模板。这可能吗?
另外,我可以在 user-list 和 add-user 组件之间建立父子关系吗?我希望能够将道具(用户列表)传递给添加组件并将事件分派回用户列表。
谢谢!
【问题讨论】:
-
当您转到
/user时,用户列表将呈现在您的主视图中。当你去/user/add时会自动呈现在同一个<router-view>中。这是默认行为。是的,您可以使用道具等进行亲子交流。 -
这似乎不是我的默认行为。当我定义 subRoutes 并导航到它们时,根路由保持活动状态。当我将 subRoutes 定义为根级路由时,它可以工作:/
-
这不是很有帮助。我向前和向后阅读文档。在 nested 一章中,它声明“渲染的组件也可以包含它自己的嵌套
<router-view>”,但here 最后一个示例使用/c作为<router-view>的容器。这也是我看到的行为。
标签: javascript vue.js vue-router