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 01 Vue.js
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
解读Vue组件注册方式
May 15 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 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
跟我学Laravel之配置Laravel
2014/10/15 PHP
JavaScript 事件对象的实现
2009/07/13 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
token 机制和实现方式
2020/12/15 Javascript
python实现网站的模拟登录
2016/01/04 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
python并发编程之线程实例解析
2017/12/27 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Python处理PDF与CDF实例
2020/02/26 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
java基础——多线程
2021/07/03 Java/Android
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技