vue route新窗口跳转页面并且携带与接收参数


Posted in Vue.js onApril 10, 2022

1、携带普通类型参数

字符串、数字等。

path:要跳转新页面的路由链接

query:要携带的参数

let pathInfo = this.$router.resolve({
  path:'/product_detail',
     query:{
         productId:'11'
     }
 })
 window.open(pathInfo.href, '_blank');

新页面的参数接收:

this.productId = this.$route.query.productId

2、携带复杂类型参数

对象、数组等,通过JSON转换进行传递。

let pathInfo = this.$router.resolve({
   path:'/product_detail',
     query:{
         data:{name:'张三'}
     }
 })
 window.open(pathInfo.href, '_blank');

新页面的参数接收:

console.log(this.$route.query.data)

vue页面跳转并传参的八种方式

我们知道,在vue中每个页面都需要在路由中声明,就是在router/index.js中写下面代码:

import Vue from 'vue'
import Router from 'vue-router'
import Test from "../components/Test";
Vue.use(Router)
export default new Router({
  mode: 'history',
  routes: [
          {
              path: '/t',
              name: 'Test',
              component: Test,
              hidden:true
            },
        ]
    })

实现页面跳转并传参有多种方式:

方法一

在template中可以使用<router-link>标签实现跳转,跳转的路径是http://localhost:8080/t?index=id,如下:

<router-link to="/t?index=1">
     <button class="btn btn-default">点击跳转</button>
</router-link>

只需要点击按钮就可以实现跳转,不需要写js代码,需要传递参数的话只需要/t?index=1即可,这样的话跳转的页面获取参数通过window.location.href能够获取到完整的url,然后截取参数。也可以通过下面代码获取参数

this.$route.query.index

方法二

跳转的路径是http://localhost:8080/t?index=id

<router-link :to="{path:'/t',query: {index: 1}}">
     <button class="btn btn-default">点击跳转</button>
</router-link>

其中需要注意,这里的to前面一定要加冒号,path的值要和上面路由定义的值一致,传参用query,里面是参数字典。

接收参数:

this.$route.query.index

方法三

命名路由的方式:

跳转的路径是http://localhost:8080/t?index=id

<router-link :to="{name:'Test',params: {index: 1}}">
     <button class="btn btn-default">点击跳转</button>
</router-link>

注意这里的name也要和router/index.js中声明的name值一致,并且传参使用params,和name配对的是params,和path配对的是query。

接收参数:

this.$route.params.index

方法四

跳转的路径是http://localhost:8080/t/id

<router-link:to="'/test/'+1">
     <button class="btn btn-default">点击跳转</button>
</router-link>

这时的路由也需要更为为下面的形式:

routes: [
          {
              path: '/t/:index',
              name: 'Test',
              component: Test,
              hidden:true
            },
        ]

接收参数:

this.$route.params.index

方法五

上面四种方法都是在html中实现的跳转,还有另外对应的在js中实现的跳转并传参的方法,代码如下:

<template>
<button @click = "func()">跳转</button>
</template>
<script>
    export default{
        methods:{
            func (){
                this.$router.push({path: '/t?index=1'});
            }
        }
    }
</script>

接收参数依然使用

this.$route.query.index

方法六

<template>
<button @click = "func()">跳转</button>
</template>
<script>
    export default{
        methods:{
            func (){
                this.$router.push({path: '/t',query:{ index:'1'}});
            }
        }
    }
</script>

接收参数依然使用

this.$route.query.index

方法七

<template>
<button @click = "func()">跳转</button>
</template>
<script>
    export default{
        methods:{
            func (){
                this.$router.push({path: '/t/index'});
            }
        }
    }
</script>

接收参数依然使用

this.$route.query.index

方法八

<template>
<button @click = "func()">跳转</button>
</template>
<script>
    export default{
        methods:{
            func (){
                this.$router.push({name: 'Test',params:{ index:'1'}});
            }
        }
    }
</script>

接收参数依然使用

this.$route.params.index

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。 

Vue.js 相关文章推荐
vue+iview实现分页及查询功能
Nov 17 Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
用vue设计一个日历表
Dec 03 Vue.js
vuex Module将 store 分割成模块的操作
Dec 07 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 Vue.js
vue实力踩坑之push当前页无效
Apr 10 #Vue.js
vue实现Toast组件轻提示
Apr 10 #Vue.js
vue自定义右键菜单之全局实现
Apr 09 #Vue.js
vue判断按钮是否可以点击
Apr 09 #Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 #Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 #Vue.js
vue实现列表垂直无缝滚动
Apr 08 #Vue.js
You might like
php实现图片上传、剪切功能
2016/05/07 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
关于ES6尾调用优化的使用
2020/09/11 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
销售行政专员职责
2014/01/03 职场文书
关于逃课的检讨书
2014/01/23 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
优秀党员先进材料
2014/12/18 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Golang解析JSON对象
2022/04/30 Golang