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基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
Vue图片裁剪组件实例代码
Jul 02 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
如何优化vue打包文件过大
Apr 13 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 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中的MVC模式运用技巧
2007/05/03 PHP
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php轻松实现文件上传功能
2016/03/03 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
浅谈Python的文件类型
2016/05/30 Python
django解决跨域请求的问题
2018/11/11 Python
Python文件操作基础流程解析
2020/03/19 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
python中字典增加和删除使用方法
2020/09/30 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
北京振戎融通Java面试题
2015/09/03 面试题
行政办公员自我评价分享
2013/12/14 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android