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 18 Vue.js
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
解决vue中provide inject的响应式监听
Apr 19 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数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
python获取文件扩展名的方法
2015/07/06 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
python数据归一化及三种方法详解
2019/08/06 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
迟到检讨书大全
2014/01/25 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
追悼会主持词
2014/03/20 职场文书
婚假请假条怎么写
2014/04/10 职场文书
解放思想演讲稿
2014/09/11 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS