Vue-router(4)之路由跳转
路由传参
案例:现在需要展示一个电影列表页,点击每一部电影,会跳转到该部电影详情页(跳转时携带type和id)
代码实现(未携带type):

index.js
import Vue from 'vue' import VueRouter from 'vue-router'
Vue.use(VueRouter) import MovieList from './MovieList.vue'
import MovieDetail from './MovieDetail.vue' const router = new VueRouter({
routes: [
{ path: '/', redirect: '/movielist'},
{ path: '/movieist', component: MovieList },
// 在路由规则中,可以把参数项,前面添加 :
// 1. 如果在组件中,想要拿到 path 中匹配的路由参数项,可以为 路由规则 开启 props 传参
{ path: '/movie/detail/:id', component: MovieDetail, props: true }
]
}) import app from './app.vue'
const vm = new Vue({
el: '#app',
render: c => c(app),
router
})
movieList.vue
<template>
<div>
<h3>电影列表</h3>
<ul>
<!-- router-link 的 to 属性,可以使用 v-bind 属性绑定,动态绑定一个路由地址 -->
<!-- router-link 默认渲染为 a 链接,可以指定 tag 属性,强制 router-link 渲染为特定的标签 -->
<!-- 使用字符串拼接 ,得到 路由地址,实现跳转 -->
<router-link tag="li" :to="'/movie/detail/' + item.id" v-for="item in movielist" :key="item.id">
{{item.id}} - {{item.type}} - {{item.name}}
</router-link>
</ul>
</div>
</template> <script>
export default {
data() {
return {
movielist: [
{ id: 1, type: 'en', name: '神奇动物' },
{ id: 2, type: 'cn', name: '红海行动' },
{ id: 3, type: 'jp', name: '名侦探柯南' },
{ id: 4, type: 'us', name: '复仇者联盟' }
]
}
}
}
</script> <style lang="less" scoped>
ul {
padding: 0;
margin: 0;
li {
line-height: 35px;
font-size: 12px;
border: 1px solid #ccc;
margin: 10px 0;
}
}
</style>
movieDetails.vue
<template>
<div>
<h3>电影详情页 --- {{id}}</h3>
</div>
</template> <script>
export default {
// 接收传过来的值
props: ['id'],
created() {
console.log(this)
}
}
</script>


命名路由(携带type)
命名路由就是为路由规则添加一个name属性
1、在index.js/router下:给MovieDetails添加name属性
const router = new VueRouter({
routes: [
// 重定向
{ path: '/', redirect: '/list'},
{ path: '/list', component: MovieList },
// 在路由规则中,可以把参数项,前面添加 :
// 1. 如果在组件中,想要拿到 path 中匹配的路由参数项,可以为 路由规则 开启 props 传参
{ path: '/movie/detail/:id/:type', component: MovieDetails, props: true, name: 'MovieDetail'}
]
})
2、在movieList.vue下:to使用name
<router-link tag="li" :to="{name: 'MovieDetail',params:{id:item.id,type:item.type}}" v-for="item in movielist" :key="item.id">
{{item.id}} - {{item.type}} - {{item.name}}
</router-link>
movieDetails.vue:
<template>
<div>
<h3>电影详情页 --- {{id}} --- {{type}}</h3>
</div>
</template> <script>
export default {
props: ['type','id'],
created() {
console.log(this)
}
}
</script>


编程式导航
this.$router.push('路径的地址')
// 字符串
router.push('home') // 对象
router.push({ path: 'home' }) // 命名的路由
router.push({ name: 'user', params: { userId: 123 }}) // 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})
this.$router.go(n)this.$router.forward()this.$router.back()
movieDetails.vue:
<template>
<div>
<h3>电影详情页 --- {{id}} --- {{type}}</h3>
<button @click="goBack()">返回上一级</button>
</div>
</template> <script>
export default {
props: ['type','id'],
created() {
console.log(this)
},
methods: {
goBack() {
this.$router.go(-1)
// this.$router.back()
}
}
}
</script>

Vue-router(4)之路由跳转的更多相关文章
- vue路由--使用router.push进行路由跳转
手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 route-link是在html中静态定 ...
- 如何在Vue项目中给路由跳转加上进度条
1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...
- vue.js利用vue.router创建前端路由
node.js方式: 利用node.js安装vue-router模块 cnpm install vue-router 安装完成后我们引入这个模板! 下载vue-router利用script引入方式: ...
- vue简单的v-for - - 路由跳转
前几天写了一个特特特简单的小图片页面,主要用到的就是v-for遍历以及路由跳转到详情页.路由跳转需要在router文件夹下index.js引入. 导航栏(element ui导航栏为模板): < ...
- vue中两种路由跳转拼接参数
this.$router.push({name:"Home",query:{id:1,name:2}}) // 取到路由带过来的参数 let routerParams = this ...
- router.push query 路由 跳转 传参使用
this.$router.push({path:'/shop',query:{ goods_name:goods_name, goods_price:goods_price, uid:goods_pr ...
- Vue Router路由守卫妙用:异步获取数据成功后再进行路由跳转并传递数据,失败则不进行跳转
问题引入 试想这样一个业务场景: 在用户输入数据,点击提交按钮后,这时发起了ajax请求,如果请求成功, 则跳转到详情页面并展示详情数据,失败则不跳转到详情页面,只是在当前页面给出错误消息. 难点所在 ...
- vue router的浏览器跳转行为
最近做的项目中,涉及vue router 路由操作,其操作方法不同,产生的行为亦不同.本文通过对比实验,对其行为进行实验对比及总结,避免混淆. vue router的单页跳转的history模式,类似 ...
- vue里使用element饿了么的el-menu+vue-router实现路由跳转的两种方法
最近准备写一个echarts的可视化展示案例,首先用vue-cli3创建了一个项目(好像vue-cli4也出来,感觉变化不大,就没升级了) 然后,开始配置路由↓下面是我的router.js文件 imp ...
- [Vue 牛刀小试]:第十四章 - 编程式导航与实现组件与 Vue Router 之间的解耦
一.前言 在上一章的学习中,通过举例说明,我们了解了 Vue Router 中命名路由.命名视图的使用方法,以及如何通过 query 查询参数传参,或者是采用 param 传参的方式实现路由间的参数传 ...
随机推荐
- Python 使用 requests 模块发送请求的使用及封装
一.requests 模块基本使用 1.准备接口的URL.请求参数.请求头 # 1. 构造注册.登录.充值请求的url register_url = "注册url" login_u ...
- java代码静态分析工具
需求:有些基础类型的遍历,值希望它被赋予指定的几个值,赋予其他值能够别编译器(IDEA/eclipse)提醒 Android studu结合自己的插件,引入 <!-- https://mvnre ...
- NO1 ip-systemctl-fdisk
一.IP相关·man·man:show manual info 查看一个命令的帮助信息:man ip·ip命令: show device显示设备,device address显示地址,route ...
- 剑指offer自学系列(一)
题目描述:输入n个整数,找出其中最小的k个数,例如,输入{4,5,1,6,2,7,3,8}这8个数字,最小的4个数字是1,2,3,4 题目分析:首先我能想到的是先对数组排序,从小到大,然后直接输出想要 ...
- GNS3 模拟icmp目标不可达
目标不可达: R1 : conf t int f0/0 no shutdown ip add 192.168.1.1 255.255.255.0 end R2 f0/0: conf t int f0/ ...
- 【LeetCode】重新安排行程
[问题]给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序.所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所 ...
- 【转载】Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
Android Gradle Build Error:Some file crunching failed, see logs for details解决办法 转载请标明出处: http://www. ...
- 六十七、SAP中内表插入的三种方法之一,APPEND的使用
一.如果内表是一个普通的内表,只用于存储数据不用来排序,那么优先选择APPEND插入 二.我们运行程序,并把工作区和内表加入到断点变量,如图所示,1X22的意思如图 三.我们点击ITAB1,来看内表数 ...
- Char、float、Double、BigDecimal
Char初识 char: char类型是一个单一的 16 位 Unicode 字符 char 在java中是2个字节("字节"是byte,"位"是bit ,1 ...
- 实验吧-隐写术-黑与白(二)(反转+五笔+Image steganography)
反转有二:颜色反转.文件名反转 文件名这么乱,毫无规律,好奇怪,进行反转后发现是:steganography(就是隐写术的意思),这还是个图片文件,有一款工具正好叫Image steganograph ...