路由传参

案例:现在需要展示一个电影列表页,点击每一部电影,会跳转到该部电影详情页(跳转时携带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. netty权威指南学习笔记四——TCP粘包/拆包之粘包问题解决

    发生了粘包,我们需要将其清晰的进行拆包处理,这里采用LineBasedFrameDecoder来解决 LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看 ...

  2. 3 —— node —— 文件追加内容

    思想 : 先读取 , 再追加 const fs = require('fs') fs.readFile("./hello.txt","utf-8",(err,d ...

  3. jquery快速常用技能

    jQuery入口函数与js入口函数 (window.onload = function(){})的对比: 1.JavaScript的入口函数要等到页面中所有资源(包括图片.文件)加载完成才开始执行. ...

  4. Flutter Windows下AndroidStudio环境搭建

    目前同类产品比较知名的有ReactNative,Flutter还有国内那家了uniapp了,流畅度理论上Flutter最快 官网:https://flutter.dev/docs/get-starte ...

  5. Vulkan SDK 之 Graphics Pipeline

    A graphics pipeline consists of shader stages, a pipeline layout, a render pass, and fixed-function ...

  6. 九十七、SAP中ALV事件之十,通过REUSE_ALV_COMMENTARY_WRITE函数来显示ALV的标题

    一.SE37查看REUSE_ALV_COMMENTARY_WRITE函数 二.查看一下导入 三.我们点击SLIS_T_LISTHEADER,来看一下类型 四.我们再看一下,这个info是60长度的字符 ...

  7. Flink on yarn以及实现jobManager 高可用(HA)

    on yarn https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/deployment/yarn_setup.html f ...

  8. hdu 1075 What Are You Talking About 火星文翻译成英文

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  9. 小程序分享H5页面

    1.在要分享的按钮上写一个跳转 <navigator url="../invite1/invite1"> <button class="invite_b ...

  10. P1018 锤子剪刀布

    转跳点: