路由传参

案例:现在需要展示一个电影列表页,点击每一部电影,会跳转到该部电影详情页(跳转时携带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)之路由跳转的更多相关文章

  1. vue路由--使用router.push进行路由跳转

    手机赚钱怎么赚,给大家推荐一个手机赚钱APP汇总平台:手指乐(http://www.szhile.com/),辛苦搬砖之余用闲余时间动动手指,就可以日赚数百元 route-link是在html中静态定 ...

  2. 如何在Vue项目中给路由跳转加上进度条

    1.前言 在平常浏览网页时,我们会注意到在有的网站中,当点击页面中的链接进行路由跳转时,页面顶部会有一个进度条,用来标示页面跳转的进度(如下图所示).虽然实际用处不大,但是对用户来说,有个进度条会大大 ...

  3. vue.js利用vue.router创建前端路由

    node.js方式: 利用node.js安装vue-router模块 cnpm install vue-router 安装完成后我们引入这个模板! 下载vue-router利用script引入方式: ...

  4. vue简单的v-for - - 路由跳转

    前几天写了一个特特特简单的小图片页面,主要用到的就是v-for遍历以及路由跳转到详情页.路由跳转需要在router文件夹下index.js引入. 导航栏(element ui导航栏为模板): < ...

  5. vue中两种路由跳转拼接参数

    this.$router.push({name:"Home",query:{id:1,name:2}}) // 取到路由带过来的参数 let routerParams = this ...

  6. router.push query 路由 跳转 传参使用

    this.$router.push({path:'/shop',query:{ goods_name:goods_name, goods_price:goods_price, uid:goods_pr ...

  7. Vue Router路由守卫妙用:异步获取数据成功后再进行路由跳转并传递数据,失败则不进行跳转

    问题引入 试想这样一个业务场景: 在用户输入数据,点击提交按钮后,这时发起了ajax请求,如果请求成功, 则跳转到详情页面并展示详情数据,失败则不跳转到详情页面,只是在当前页面给出错误消息. 难点所在 ...

  8. vue router的浏览器跳转行为

    最近做的项目中,涉及vue router 路由操作,其操作方法不同,产生的行为亦不同.本文通过对比实验,对其行为进行实验对比及总结,避免混淆. vue router的单页跳转的history模式,类似 ...

  9. vue里使用element饿了么的el-menu+vue-router实现路由跳转的两种方法

    最近准备写一个echarts的可视化展示案例,首先用vue-cli3创建了一个项目(好像vue-cli4也出来,感觉变化不大,就没升级了) 然后,开始配置路由↓下面是我的router.js文件 imp ...

  10. [Vue 牛刀小试]:第十四章 - 编程式导航与实现组件与 Vue Router 之间的解耦

    一.前言 在上一章的学习中,通过举例说明,我们了解了 Vue Router 中命名路由.命名视图的使用方法,以及如何通过 query 查询参数传参,或者是采用 param 传参的方式实现路由间的参数传 ...

随机推荐

  1. 利用 Ruoyi 开发自己的业务管理系统__测试结构完成

    前言铺垫不多说 (1)Ruoyi这个平台不错:如果你觉得你比Ruoyi的作者牛逼,你就不用看我这个文章了,你可以走了,因为我自认为比Ruoyi的作者要烂: (2)必须已经成功搭建Ruoyi,并能在自己 ...

  2. Vue父组件向子组件传值

    父组件向子组件传值 组件实例定义方式,注意:一定要使用props属性来定义父组件传递过来的数据 <script> // 创建 Vue 实例,得到 ViewModel var vm = ne ...

  3. Scala 线性化规则和 super 操作

    如果一个类有多个父类,且父类的有相同的函数 f,在子类和父类中调用 super.f 都是按从右到左的调用函数的顺序. 这个规则名为:Linearization Rules 如下的代码 trait Ba ...

  4. 请求接口得到一段markdowm遇到的问题

    如图,在console里看得到这段数据 有<br>之类的东东,但是我们用部分富文本解析工具可能会显示不了回车,所以我们可以自己动手: 主要就是利用js的replace方法来把<br& ...

  5. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-home

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. Python3 格式化输出

    Python3 格式化输出 今天用字符串功能的时候,我突然忘记了格式化输出的方式X﹏X.所以赶紧恶补一下. 1.打印字符串 print("My name is %s" %(&quo ...

  7. netty权威指南学习笔记一——NIO入门(1)BIO

    公司的一些项目采用了netty框架,为了加速适应公司开发,本博主认真学习netty框架,前一段时间主要看了看书,发现编程这东西,不上手还是觉得差点什么,于是为了加深理解,深入学习,本博主还是决定多动手 ...

  8. 从Http上返回Json数据

    我们现在先在浏览器访问一下,看到下面返回的结果: 接下来就是大家最喜欢的写代码环节,为了方便演示,我们这里用winform程序.非常简单,我们新建一个窗体程序,点击后,弹出JSON数据即可.界面如下: ...

  9. 微信小程序如何刷新当前界面

    在微信小程序开发的过程中,在一个页面中对数据操作之后我们大多数时间都需要刷新一下当前界面以把操作之后的结果显示出来,但是如何在执行操作后进行本页面的刷新就成了一个问题很大但是很需要的操作.下面介绍一下 ...

  10. 16.swoole学习笔记--异步事件

    <?php //异步事件 $fp=stream_socket_client(); fwrite($fp,"GET / HTTP/1.1\r\nHost:www.qq.com\r\n\r ...