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 传参的方式实现路由间的参数传 ...
随机推荐
- 把自己的项目发布到maven仓库并在maven和gradle中开始使用
把自己的项目发布到maven仓库并在maven和gradle中开始使用 上一条博客中提到的日志打印项目总算是维护的差不多了, 不过现在使用它还是打成jar包放到其他项目内, 所以决定把项目传到mave ...
- Windows下使用Tomcat
tomcat简介 Tomcat是一个开源.免费.轻量级的web服务器,只支持部分JavaEE规范(Servlet.JSP),适合部署中小型.并发访问量不大的web项目,是部署中小型Java Web项目 ...
- notifix测试
成功 失败 警告 提示
- C++连接sqlite数据库的增删查改操作
这个代码是接着上次说的,要用VS2013操作数据库,首先要配置好环境,创建好数据库表等. 不明白的翻我前面2篇看看~~~ 关于前面的用到的goto 语句,这个我也是参考其他博主写的,现在我注释掉了,毕 ...
- Delphi另一个多线程函数:BeginThread用法
Delphi另一个多线程函数:BeginThread━━━━━━━━━━━━━━━━━━━━━━━━━━ Delphi也提供了一个相同功能的类似函数:function BeginThread( ...
- 官网英文版学习——RabbitMQ学习笔记(五)Publish/Subscribe
发布/订阅模式:把一个消息发送给多个消费者. 前几篇文章的思想是,我们好像看到了生产者将消息直接发送给queue,然后消费者也从queue中进行消费.其实并非如此,RabbitMQ中的消息传递模型的核 ...
- Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in
原语句: db.carMongoDTO.aggregate({}}}, {}}}) 报错: Exceeded memory limit for $group, but didn't allow ext ...
- while循环和do-while循环语句
while 语句 条件表达式的结果是一个 boolean 值,如果为true,则执行循环体:如果为 false,循环就会结束. while 循环体是一个代码块,所以 while 循环是可以嵌套其他的语 ...
- 061-PHP函数定义默认参数
<?php function add($x=2,$y=3){ //定义函数并设置默认参数 return $x+$y; } echo add(); //不传入参数调用add函数add(2,3) e ...
- PHP笔记02
PHP数组 能够在一个变量存储多个值 取值用下标,下标从0开始计算 好处:在处理物品清单等大量相同属性的变量内容时可以集中存取 <?php $arr=array("like" ...