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-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
vue-router定义元信息meta操作
Dec 07 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
vue动态绑定style样式
Apr 20 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
收音机指标测试方法及仪器
2021/03/01 无线电
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
php实现的通用图片处理类
2015/03/24 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
node.js的事件机制
2017/02/08 Javascript
javascript内存分配原理实例分析
2017/04/10 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
Numpy之random函数使用学习
2019/01/29 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
买房子个人收入证明
2014/01/16 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
防震减灾主题班会
2015/08/14 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
浅谈Redis缓冲区机制
2022/06/05 Redis
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android