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 传参的方式实现路由间的参数传 ...
随机推荐
- leetcode1305 All Elements in Two Binary Search Trees
""" Given two binary search trees root1 and root2. Return a list containing all the i ...
- Spark技术学院-进去能学到啥?
Spark技术学院是什么? 主要是浪尖,前腾讯现阿里的大神一起搞的知识分享基地,旨在帮助大家由入门到精通spark,hbase,kafka大数据重要的框架,还有给入门小白指点入门方法,分享入门资料,对 ...
- netty权威指南学习笔记八——编解码技术之JBoss Marshalling
JBoss Marshalling 是一个java序列化包,对JDK默认的序列化框架进行了优化,但又保持跟java.io.Serializable接口的兼容,同时增加了一些可调参数和附加特性,这些参数 ...
- 机器学习(ML)一之 Linear Regression
一.线性回归 1.模型 2.损失函数 3.优化函数-梯度下降 #!/usr/bin/env python # coding: utf-8 import torch import time # init ...
- HDU 4902 Nice boat 多校4 线段树
给定n个数 第一个操作和普通,区间覆盖性的,把l-r区间的所有值改成固定的val 第二个操作是重点,输入l r x 把l-r区间的所有大于x的数,变成gcd(a[i],x) a[i]即指满足条件的序列 ...
- POJ 2104 求序列里第K大 主席树裸题
给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么 只有询问,没有修改 可以用归并树和划分树(我都没学过..囧) 我是专门冲着弄主席树来的 对主席树的建树方式有点了解了,不过这题为 ...
- 经验分享:如何搞定Personal Statement?
最近又到申请季啦,如何自己DIY申请,如何准备文书成为众多留学生关心的问题.不管是你申请本科,硕士,还是博士,相信这篇文章都能帮助到你.下面来说一下文书中一个很重要的组成,就是个人陈述Personal ...
- Spark笔记(一)
简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapR ...
- [题解] LuoguP3784 [SDOI2017]遗忘的集合
要mtt的题都是...... 多补了几项就被卡了一整页......果然还是太菜了...... 不说了......来看100分的做法吧...... 如果做过付公主的背包,前面几步应该不难想,所以我们再来 ...
- Linux用户管理 权限管理 内存管理 网络管理命令 (第四天)
默认添加的用户会自动加入和用户名一样的组中su 切换用户查看当前登陆的用户: whoami id`查看当前用户属于哪个组:groupsgroupadd 组名 添加组groupdel 组名 删除组gre ...