使用Vue-router二级路由跳转另一条路由下的子级
作者:Whitess007 发布时间:2024-05-09 09:52:07
标签:Vue-router,二级路由,跳转,路由,子级
Vue-router二级路由跳转另一条路由下的子级
实验项目中,在一个 /list/user 列表中,当点击某一条时,需要跳转到 /detail/userId/user 详情下,展示详情信息。
router.js
const routes = [
{
path: '/ue/matter/list',
name: 'list',
component: List,
children: [
{ path: 'user', name: 'list-user', component: ListUser },
],
props: true
},
{
path: '/ue/matter/detail/:userId',
name: 'detail',
component: Detail,
children: [
{ path: 'user', name: 'detail-user', component: DetailUser },
],
props: true
}
]
ListUser 组件中,采用编程式导航的方式跳转,写法如下:
this.$router.push({name:detail-user, path:`/ue/matter/detail/user/${userid}/user}`);
或者如下
this.$router.push({name: detail-user});
结果
组件内容确实更换了,但浏览器上的地址栏错了
实验
看官方文档说,path+params地方式会被忽略,所以将router.push中用到的键path、params、name、query分别组合做了一个页面,来测试哪种会不可以。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>router-linkto</title>
<link rel="stylesheet" href="">
</head>
<body>
<div id="app">
<router-link :to="{ path: 'home' }">path单独 </router-link>
<router-link :to="{ path: 'foo', name: foo}">path + name </router-link>
<router-link :to="{ path: 'bar', query: {plan:'private'} }">path + query /bar?plan="private"</router-link>
<router-link :to="{ name: 'user', params: {userId:123} }">name + params /user/123</router-link>
<router-link :to="{ name: 'many', query: {plan:'private'} }">name + query </router-link>
<router-link :to="{ params: { userId: 123 }, query: {plan: 'private'} }">params + query </router-link>
<br/>
<br/>
<router-view></router-view>
</div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script>
const Home = {
template: '<div>Home path单独 <span v-on:click="change()">点击跳转到path+name</span> </div>',
methods: {
change: function() {
this.$router.push({name: "foo", path: "/foo"})
}
}
}
const Foo = { template: "<div>Foo path+name</div>"}
const Bar = { template: "<div>Bar path+query</div>"}
const User = { template: "<div>User {{$route.params.userId}}</div>" }
const Many = { template: "<div>Many name+params</div>" }
const Too = { template: "<div>Too params + query</div>" }
const router = new VueRouter({
routes: [
{
path: "/home",
component: Home
},
{
name: "foo",
path: "/foo",
component: Foo
},
{
path: "/bar",
component: Bar
},
{
name: "user",
path: "/user/:userId",
component: User
},
{
path: "/many",
name: "many",
component: Many
},
{
path: "/too/:userId",
component: Too
}
]
})
new Vue({
el: '#app',
router
})
</script>
</html>
结论:
结果是:除了path+params之外,params+query也不可以,因为没有告知路径信息
那对于上面涉及二级跳转,那写name + path的方式,我理解的是path需要拼接,所以给了name就会找不到路径。我之后的修改是,只传给push一个字符串路径。
this.$router.push(`/ue/matter/detail/user/${userid}/user`)
vue二级路由跳转一级路由激活处理
有时候有的页面是一个页面的子页面,这时候点击打开跳转到二级页面,这个时候
一级导航的路由可能激活状态不对应
本人是这么处理的
<el-menu :default-active="$route.path.match('(/[a-z]+[^/]){1}')[0]"
这样就可以匹配目标页面的路由匹配头部就聚焦
来源:https://blog.csdn.net/rencaishigepi/article/details/100769409


猜你喜欢
- 介绍go1.5+版本提供编译好的安装包,我们只需要解压到相应的目录,并添加一些环境变量的配置即可。Go语言的安装步骤
- SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf
- 前文学习:python数据类型: python数据结构:数据类型.python的输入输出: python数据结构输入输出及控制和异常.pyt
- python开发中经常遇到报错的情况,但是warning通常并不影响程序的运行,而且有时特别讨厌,下面我们来说下如何忽略warning错误。
- 问题描述在spring-boot启动时,希望能执行相应的sql文件来初始化数据库。使用配置文件初始化数据库可以在spring-boot的配置
- 1. 查询 除了单条记录的查询,这里我们来尝试查询一组记录。IUserMapper接口添加下面方法:List<User> get
- 本文实例讲述了python开启多个子进程并行运行的方法。分享给大家供大家参考。具体如下:这个python代码创建了多个process子进程,
- Py2 时代,访问 MySQL 数据库的模块除了 PyMySQL 和 MySQL-python 之外,还有以速度见长的 Umysql,以及非
- 安装electroncnpm install electron -g安装electron-packagercnpm install elec
- ul: unordered lists ol: ordered lists li: Listsol 有序列表:<ol>
- 1.背景看到这个标题你可能想一个分块能有什么难度?还值得细说吗,最近确实遇到一个有意思的分块函数,写法比较巧妙优雅,所以写一个分享。日前在做
- 使用ES做搜索引擎拉取数据的时候,如果数据量太大,通过传统的from + size的方式并不能获取所有的数据(默认最大记录数10000),因
- 一 前期说明:我运行项目的环境是nginx+php,存储代码用的是gitlab,python版本:3.6 django版本:2.2.1 my
- 函数名称:CheckForm_JS(frmName,errStr)功能:用ASP的方法动态写出JavaScript的表单验证的函数check
- 当我们在使用php开发的时候,基本不需要关心热更新这件事的,因为PHP本身已经帮我处理好了,只需要提交代码,PHP重新解释一遍即可。而go则
- Checkbutton(多选按钮)组件用于实现确定是否选择的按钮。Checkbutton 组件可以包含文本或图像,你可以将一个 Python
- Jupyter Notebook读取csv文件失败1.IndentationError: expected an indented bloc
- 列表对象pop()方法的使用pop() 方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。语法:verse.pop(in
- 存储文件的重要一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,。 默认数据是加载到
- 有时候我们需要在程序里执行一些cmd命令,使用os或者其它模块中的popen方法去执行这个问题一般是程序内有输入导致的,这个输入可以是inp