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 相关文章推荐
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
vue实现图书管理系统
Dec 29 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
Vue的生命周期一起来看看
Feb 24 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 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 file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
javascript基本语法
2016/05/31 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python如何读取文件中图片格式
2020/01/13 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
pyspark 随机森林的实现
2020/04/24 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
汽车队司机先进事迹材料
2014/02/01 职场文书
新护士岗前培训制度
2014/02/02 职场文书
道德模范先进事迹
2014/02/14 职场文书
承诺书怎么写
2014/03/26 职场文书
统计学教授推荐信
2014/09/18 职场文书
工作总结与自我评价
2014/09/18 职场文书
初中作文评语集锦
2014/12/25 职场文书
人事文员岗位职责
2015/02/04 职场文书
党员转正申请报告
2015/05/15 职场文书