Vue 路由间跳转和新开窗口的方式(query、params)
路由间跳转配置:
query 方式
参数会在url中显示
this.$router.push({ // query方式 path: "/a", query: { projectDetails: val },
params 方式
传参数据不会在导航栏中显示,需要配合路由的name属性使用
// params 方式 name: 'a', params: { projectDetails: val }
新开页面
需要使用resolve配置
const {href} = this.$router.resolve({ path: '/a', query: { code: '123', } }) window.open(href, '_blank')
这里需要注意一下,使用params进行传参,在新页面内使用this.$route.params
对象为{},参数无法传过来,query是可以正常传参。
我想这个应该跟我们正常打开一个链接是一样的,因为router-link的tag='a',
应该是个超链接。
这个只是我的个人想法,欢迎指正。
如果遇到这种情况,不想参数在url上显示且必须要传的话,可以借用浏览器的缓存来实现。
在父页面写入缓存,在子页面从缓存中读取,读取之后再删除。
总结
以上所述是小编给大家介绍的Vue 路由间跳转和新开窗口的方式(query、params),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关推荐
-
浅析vue-router jquery和params传参(接收参数)$router $route的区别
今天做项目时踩到了vue-router传参的坑(jquery和params),所以决定总结一下二者的区别. 1.jquery方式传参和接收参数 传参: this.$router.push({ path:'/xxx' query:{ id:id } }) 接收参数: this.$route.query.id 注意:传参是this.$router,接收参数是this.$route,这里千万要看清了!!! this.$router 和this.$route有何区别? 在控制台打印两者可以很明显的看出两
-
浅析vue-router中params和query的区别
1.引入方式不同 query要用path来引入 this.$router.push({ path: 'test', query: { type: 2, detail: '哈哈' } }) params要用name来引入 this.$router.push({ name: 'test', query: { type: 2, detail: '哈哈' } }) 2.url不同 query在url中显示参数 http://localhost:8080/detail?type=0&detail=哈哈 p
-
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 router使用query和params传参的使用和区别
写在前面: 传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍vue router 是如何进行传参的,以及一些小细节问题.有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家. Vue router如何传参 params.query是什么? params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params query:/router1?id=123 ,/router1?id=456
-
Vue 路由间跳转和新开窗口的方式(query、params)
路由间跳转配置: query 方式 参数会在url中显示 this.$router.push({ // query方式 path: "/a", query: { projectDetails: val }, params 方式 传参数据不会在导航栏中显示,需要配合路由的name属性使用 // params 方式 name: 'a', params: { projectDetails: val } 新开页面 需要使用resolve配置 const {href} = this.$route
-
Vue路由传参props解耦的三种方式小结
目录 路由组件传参 布尔模式 对象模式 函数模式 总结 路由组件传参 在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性. 使用 props 将组件和路由解耦: 布尔模式 商品展示界面传递id的动态参数 <template> <div class="home"> <TabBar></TabBar> <p>这是首页</p> <ul> &l
-
Vue路由跳转方式区别汇总(push,replace,go)
目录 声明式导航router-link 1. 不带参数 2.带参数 编程式导航 1.this.$router.push 2.this.$router.replace 3.this.$router.go(n) 总结区别: 在浏览器中,点击链接实现导航的方式,叫做声明式导航.例如:普通网页中点击 a标签链接.vue项目中点击router-link标签链接都属于声明式导航.在浏览器中,调用API方法实现导航的方式,叫做编程式导航.例如:普通网页中调用location.href跳转到新页面的方式,属于编
-
3种vue路由传参的基本模式
路由是连接各个页面的桥梁,而参数在其中扮演者异常重要的角色,在一定意义上,决定着两座桥梁是否能够连接成功. 在vue路由中,支持3中传参方式. 场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取对应li的数据,显示相应的正确的内容. 父组件中: <li v-for="article in articles" @click="getDescribe(article.id)"> 方案一: getDescribe(id) { // 直接调用$
-
vue 路由跳转打开新窗口被浏览器拦截问题处理
触发事件请求接口根据条件去判断在进行路由跳转: <a @click="getGetMyPortfolioById(scope.row) ">查看</a> getGetMyPortfolioById(vals) { getMyPortfolioById({ }).then(response = >{ const routerdata = this.$router.resolve({
-
vue路由跳转打开新窗口(window.open())和关闭窗口(window.close())
目录 vue路由跳转打开新窗口和关闭窗口 编程式导航 window.open( )方法 关闭窗口 window.close() vue路由跳转打开新窗口(被浏览器拦截) 第一种方法 第二种方法 第二种方法(改良版) 总结 vue路由跳转打开新窗口和关闭窗口 需求:从当前页面跳转到其他页面时,打开一个新窗口 比如:点击页面上的用户反馈,打开用户反馈的新页面,要使用编程式导航 编程式导航 使用路由对象的resolve的方法解析路由,可以得到location.router.href等目标路由的信息,只
-
vue路由跳转router-link清除历史记录的三种方式(总结)
目录 路由跳转router-link清除历史记录 官方文档提供了如下三种方式 vue跳转后不记录历史记录 路由跳转router-link清除历史记录 1.在vue项目中说起路由跳转,我们最先想到的就是router-link标签以及this.$router.push函数. router-link和this.\$router.push的实现原理是一样的,在点击router-link时,内部调用的就是this.$router.push. 2.this.\$router.push这个方法会向 histo
-
vue路由跳转时判断用户是否登录功能的实现
通过判断该用户是否登录过,如果没有登录则跳转到login登录路由,如果登录则正常跳转. 一丶首先在用户登录前后分别给出一个状态来标识此用户是否登录(建议用vuex): 简单用vuex表示一下,不会可以自己去官网多看看: import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); var state = { isLogin:0, //初始时候给一个 isLogin=0 表示用户未登录 }; const mutations = { cha
-
Vue路由跳转问题记录详解
最近项目上需要用Vue用来做app,在Vue中使用路由时遇到下面的问题. 路由设置如下: { path:'/tab', component:Tab, children:[{ path:'layoutList', name:'LayoutList', component:LayoutList },{ path:'layoutView/:layoutId', name:'LayoutView', component:LayoutView },{ path:'layoutDetail/:viewId'
-
简述vue路由打开一个新的窗口的方法
简单说一下vue路由如何打开一个新的窗口 1.router-link标签 在vue的官方文档中 看到这大家应该会想,既然router-link不支持target="_blank"属性,那我们该怎么用router-link打开一个新的窗口呢?别急,继续往下看~ 文档中还有一处描述 router-link添加tag="li"属性后,居然可以变成li标签渲染出来,真特么神奇哈,那可不可以写成tag="a",从而去替代a标签呢?我们尝试着写一哈 <
随机推荐
- php从memcache读取数据再批量写入mysql的方法
- CSS定义Hover实现文字变大的超级链接
- ubb代码转换为html
- java进行error捕获和处理示例(java异常捕获)
- Java编程调用微信接口实现图文信息推送功能
- functional继承模式 摘自javascript:the good parts
- Eclipse操作SVN时中断锁定,文件的解锁方法
- 安卓(Android)ListView 显示图片文字
- BootStrap Fileinput的使用教程
- 利用Keydown事件阻止用户输入实现代码
- php多个字符串替换成同一个的解决方法
- 详解Mysql自动备份与恢复的几种方法(图文教程)
- javascript合并表格单元格实例代码
- JavaScript实现ASC转汉字及汉字转ASC的方法
- php中判断文件空目录是否有读写权限的函数代码
- Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)
- 初学PHP的朋友 经常问的一些问题。不断更新
- C++中stack、queue、vector的用法详解
- vue的无缝滚动组件vue-seamless-scroll实例
- Android 仿微博的点赞功能的实现原理(持续点赞再取消)