Vue路由跳转传参或者打开新页面跳转问题

目录
  • Vue路由跳转传参或打开新页面跳转
    • 1. 通过路由中的name属性
    • 2. 通过路由属性中的path属性
    • 3. $router 和 $route的区别
    • 4. 在Vue项目中点击跳转打开一个新的页面
  • vue的跳转(打开新页面)
    • router-link跳转
    • this.$router.push/replace跳转
    • resolve跳转
    • window.open()
  • 总结

Vue路由跳转传参或打开新页面跳转

1. 通过路由中的name属性

使用params传递参数, 使用this.$route.params获取参数

这种方式传递相当于post请求, 传递的数据不会显示在url地址栏,但是页面刷新,参数会丢失

// 传递参数
this.$router.push({
	name: "首页",
	params: {
		code: 1
	}
})
// 获取参数
this.$route.params

2. 通过路由属性中的path属性

使用query传递参数, 使用this.$route.query获取参数

这种方式相当于get请求, 传递的参数会显示在url地址栏, 页面刷新,参数还保留在url上面

// 传递参数
this.$router.push({
	path: "/dashboard",
	query: {
		code: 1
	}
})
// 获取参数
this.$route.query

在获取传递参数的时候都是使用this.$route

3. $router 和 $route的区别

$router 可以看到$router是全局路由VueRouter实例

$route是存放路由信息的一个对象, 传递的数据都是存放在$route

4. 在Vue项目中点击跳转打开一个新的页面

使用this.$router.resolve({path: "/login"})可以获取到指定的路由的信息

使用window.open(routeData.href, '_blank')在新窗口中打开指定的路由页面

query:{code: 1}传递参数, 但是可以在url地址栏中看到传递的参数

通过this.$route.query获取参数

let routeData = this.$router.resolve({ path: '/login',query: {loginName}});
window.open(routeData.href, '_blank');

vue的跳转(打开新页面)

router-link跳转

   // 直接写上跳转的地址
  <router-link to="/detail/one">
    <span class="spanfour" >link跳转</span>
  </router-link>
  // 添加参数
  <router-link :to="{path:'/detail/two', query:{id:1,name:'vue'}}">
   </router-link>
  // 参数获取
  id = this.$route.query.id
  // 新窗口打开
  <router-link :to="{path:'/detail/three', query:{id:1,name:'vue'}}" target="_blank">
  </router-link>

this.$router.push/replace跳转

toDeail (e) {
   this.$router.push({path: "/detail", query: {id: e}})
 }
 // 参数获取
 id = this.$route.query.id
 
 toDeail (e) {
   this.$router.push({name: "/detail", params: {id: e}})
 }
 // 注意地址需写在 name后面
 //参数获取,params和query区别,query参数在地址栏显示,params的参数不在地址栏显示
 id = this.$route.params.id

resolve跳转

    //resolve页面跳转可用新页面打开
    //2.1.0版本后,使用路由对象的resolve方法解析路由,可以得到location、router、href等目标路由的信息。得到href就可以使用window.open开新窗口了
 toDeail (e) {
   const new = this.$router.resolve({name: '/detail', params: {id: e}})
   window.open(new.href,'_blank')
 }

window.open()

1. 在当前窗口打开百度,并且使URL地址出现在搜索栏中.

window.open("http://www.baidu.com/", "_search");
window.open("http://www.baidu.com/", "_self");

2. 在一个新的窗口打开百度

window.open("http://www.baidu.com/", "_blank");

3. 打开一个新的窗口,并命名为"hello"

window.open("", "hello");

另外, open函数的第二个参数还有几种选择:

  • _top : 如果页面上有framesets,则url会取代framesets的最顶层, 即, 如果没有framesets, 则效果等同于_self.
  • _parent:url所指向的页面加载到当前frame的父亲, 如果没有则效果等同于_self.
  • _media : url所指向的页面加载到Media Bar所包含的HTML代码区域中.如果没有Media Bar则加到本身.

如果还要添加其它的东西在新的窗口上, 则需要第三个参数:

  • channelmode : yes|no|1|0  (窗口显示为剧场模式[全屏幕显示当前网页, 包括工具栏等],或频道模式[一般显示]).
  • directories :  yes|no|1|0 (是否添加目录按钮, 比如在IE下可能会有一个"链接"这样的按钮在最上面出现)
  • fullscreen : yes|no|1|0 (使浏览器处理全屏幕模式, 并隐藏标题栏和菜单等)
  • menubar : yes|no|1|0 (是否显示浏览器默认的菜单栏)
  • resizeable : yes|no|1|0 (窗口是否可调整大小)
  • scrollbars : yes|no|1|0 (是否允许水平或垂直滑动条)
  • titlebar : yes|no|1|0 (是否添加一个标题栏)
  • toolbar : yes|no|1|0 (是否添加浏览器默认的工具栏)
  • status : yes|no|1|0 (是否显示状态栏)
  • location : yes|no|1|0  (是否显示搜索栏)
  • copyhistory :  yes|no|1|0 (似乎已经废弃, 如果只要工具栏显示, 历史按钮就会显示出来)
  • height : 窗口的高度, 最小值为100像素
  • width :  窗口的宽度, 最小值为w100像素
  • left : 窗口的最左边相对于屏幕的距离

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue跳转方式(打开新页面)及传参操作示例

    本文实例讲述了vue跳转方式(打开新页面)及传参操作.分享给大家供大家参考,具体如下: 1. router-link跳转 // 直接写上跳转的地址 <router-link to="/detail/one"> <span class="spanfour" >link跳转</span> </router-link> // 添加参数 <router-link :to="{path:'/detail/two'

  • vue3中使用router路由实现跳转传参的方法

    目录 前言 一.路由跳转 二.页面传参需要注意 总结 大家好,今天和大家分享一下vue3中如何进行跳转并进行传参. 前言 vue3取消了vue2部分api,所以路由跳转和传值的方式会有所不同.我们今天主要讲router.push(location, onComplete?, onAbort?)vue3中新增API:useRouter和useRoute 一.路由跳转 1.首先在需要跳转的页面引入API—useRouter import { useRouter } from 'vue-router'

  • vue params、query传参使用详解

    最近在学习Vue,本文介绍了vue params.query传参使用,分享给大家,也给自己留个笔记 声明式:<router-link :to="..."> 编程式:router.push(...) 这两种方式 都可以实现跳转链接,在上篇文章继续,通过A组件跳转链接到B组件并且传参数. 1.router.push使用 router/index.js export default new Router({ routes: [ { path: '/', name: 'A', co

  • vue 中的动态传参和query传参操作

    Vue router 如何传参 params.query 是什么? params:/router1/:id,这里的 id 叫做 params.例如/router1/123, /router1/789 query:/router1?id=123,这里的 id 叫做 query.例如/router1?id=456 query 方式传参和接收参数 传参: this.$router.push({ path:'/xxx' query:{ id:id } }) this.$router.push 传参时,

  • 微信小程序 页面跳转传参详解

    微信小程序 页面跳转传参,做微信小程序必定会用的这样的功能,这里就记录下本人学习实现代码资料. 刚接触微信小程序,多里面的语法和属性还不怎么聊解,如有不多的地方希望各位大神多多指教.今天来说下微信小程序怎么跳转和传参,话不多说直接上代码. 实现的功能是给列表增加点击功能传参到下一页: 代码如下: <import src="../WXtemplate/headerTemplate.wxml"/> <view> <!--滚动图--> <view&g

  • vue router 跳转时打开新页面的示例方法

    记录一下在vue项目中如何实现跳转到一个新页面(一个比较简单又比较基础的问题了),有两个方法: 1.<vue-link>标签实现新窗口打开 官方文档中说 v-link 指令被 <router-link> 组件指令替代,且 <router-link> 不支持 target="_blank" 属性,如果需要打开一个新窗口必须要用 <a> 标签,但事实上vue2版本的 <router-link> 是支持 target="_

  • JS传参及动态修改页面布局

    一个关于JS传参及动态修改页面布局的简单小例子. 效果图: HTML: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title></title> <link rel="stylesheet" href="css/style.css" rel="external nofollow" /

  • JavaScript实现按Ctrl键打开新页面

    (译者注: 本文解决的是按 Ctrl键时使用JS打开新页面的问题) 在简化的HTML5规范中,允许在 A 标签内包含多个 DIV 和/或其他块级元素. 现在只要用 <a> 标签包住块元素,就能搞定原来需要用JavaScript来监听并调用 window.location 实现页面跳转(redirect)功能. 但使用<a>标签的这种包装形式也有不好使的情况 -- 例如,某个块元素(block)内还有一些 <a> 标签, 这种情况下我们只想在点击parent中<a&

  • js 打开新页面在屏幕中间的实现方法

    <a href="javascript:void(0)" onclick="window.open('http://www.jb51.net', 'newwindow', 'height=500, width=900, top='+Math.round((window.screen.height)/2<span style="font-family: Arial, Helvetica, sans-serif;">-250</span

  • vue项目实例中用query传参如何实现跳转效果

    目录 用query传参实现跳转效果 传值页面 接收参数页面 vue使用query传参,解决跳转回退无参数渲染页面,无内容的方法(不需使用缓存的技术) 简说params和query的区别 用query传参实现跳转效果 vue中已element-ui为例,写带参跳转很方便 <el-table :data="tables" style="width: 100%; cursor: pointer" :class="tableData.length >

随机推荐