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实现图片裁剪后上传
Dec 16 Vue.js
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
全面解析Vue中的$nextTick
Dec 24 Vue.js
Vue使用鼠标在Canvas上绘制矩形
Dec 24 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
Vue+Element UI实现概要小弹窗的全过程
May 30 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 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数据流应用的简单例子
2012/06/01 PHP
php curl的深入解析
2013/06/02 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP通过引用传递参数用法分析
2016/12/01 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
js面向对象的写法
2016/02/19 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
Python类成员继承重写的实现
2020/09/16 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
一名老师的自我评价
2014/02/07 职场文书
党日活动总结
2014/05/07 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL