Vue中在新窗口打开页面及Vue-router的使用


Posted in Javascript onJune 13, 2018

背景

在开发提分加项目的过程中,遇到了点击下拉菜单时在新窗口中打开页面,由于之前一直做的是单页面应用,没有碰到过类似的需求,于是上网搜了一下解决办法,也再次系统地温习了一下vue-router。

Vue中在新窗口打开页面及Vue-router的使用

Vue中在新窗口打开页面及Vue-router的使用

解决

使用路由对象的resolve方法解析路由,可以得到location、router、href等目标路由的信息。得到href就可以使用window.open开新窗口了。

const {href} = this.$router.resolve({
 name: "statistics-explain",
 params: {
 classID: id,
 examSubjectID: this.planClassData.examSubjectID,
 studentStatus: 0
 }
});
window.open(href, '_blank');

延伸

参考文章:Vue Router

•动态路由匹配:一个“路径参数”使用冒号:标记。当匹配到一个路由时,参数值会被设置到this.$route.params,可以在每个组件内使用。

•嵌套路由:要在嵌套的出口中渲染组件,需要在 VueRouter 的参数中使用 children 配置,要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。

export default {
path: '/scoreplus',
name: 'scoreplus',
component: { template: '<router-view />' },
redirect: { name: 'scoreplus-index' },
children: [
 {
 // 查看个人方案
 path: 'preview/:examSubjectID/:xuexinID/:recordsID/:constitute/:planID',
 name: 'score-preview',
 meta: { text: '个人方案' },
 component: ScorePreview
 },
 {
 // 查看方案内容
 path: 'planList/:planID',
 name: 'score-plan-list',
 meta: { text: '查看方案内容' },
 component: ScorePlanList
 },
 {
 // 下载方案内容
 path: 'download/:planID/:classID',
 name: 'score-download-list',
 meta: { text: '下载方案内容' },
 component: DownloadList
 },
 {
 // 查看推送试题
 path: 'push/:planID/:level',
 name: 'score-question-push',
 meta: { text: '查看推送试题' },
 component: QuestionPush
 },
 {
 // 提分方案首页
 path: '',
 name: 'scoreplus-index',
 component: ScoreIndex
 }
]
}

•编程式导航

1.router.push(location, onComplete?, onAbort?):想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})

在 2.2.0+,可选的在 router.push 或 router.replace 中提供 onComplete 和 onAbort 回调作为第二个和第三个参数。这些回调将会在导航成功完成 (在所有的异步钩子被解析之后) 或终止 (导航到相同的路由、或在当前导航完成之前导航到另一个不同的路由) 的时候进行相应的调用。

2.router.replace(location, onComplete?, onAbort?):跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。

3.router.go(n):这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。

•命名路由:可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。要链接到一个命名路由,可以给 router-link 的 to 属性传一个对象。

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
router.push({ name: 'user', params: { userId: 123 }})

•重定向和别名

1.重定向(redirect):

const router = new VueRouter({
 routes: [
 { path: '/a', redirect: '/b' }
 ]
 })

2.别名:/a 的别名是 /b,意味着,当用户访问 /b 时,URL 会保持为 /b,但是路由匹配则为 /a,就像用户访问 /a 一样。

const router = new VueRouter({
 routes: [
 { path: '/a', component: A, alias: '/b' }
 ]
 })

总结

以上所述是小编给大家介绍的Vue中在新窗口打开页面及Vue-router的 使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
理解Javascript_09_Function与Object
Oct 16 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 Javascript
jQuery插件实现多级联动菜单效果
Dec 01 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
微信小程序显示下拉列表功能【附源码下载】
Dec 12 Javascript
vue无限轮播插件代码实例
May 10 Javascript
VUEX-action可以修改state吗
Nov 19 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 Javascript
微信小程序支付功能 php后台对接完整代码分享
Jun 12 #Javascript
js replace 全局替换的操作方法
Jun 12 #Javascript
微信小程序自定义prompt组件步骤详解
Jun 12 #Javascript
js实现购物车功能
Jun 12 #Javascript
浅谈Node.js 中间件模式
Jun 12 #Javascript
浅谈Webpack打包优化技巧
Jun 12 #Javascript
关于TypeScript模块导入的那些事
Jun 12 #Javascript
You might like
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
Prototype RegExp对象 学习
2009/07/19 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
深入理解Django-Signals信号量
2019/02/19 Python
python交互模式基础知识点学习
2020/06/18 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
GWT都有什么特性
2016/12/02 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
班级活动策划书
2014/02/06 职场文书
总会计师岗位职责
2014/02/19 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
汽车转让协议书范本
2014/12/07 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
红色电影观后感
2015/06/18 职场文书
2019新员工心得体会
2019/06/25 职场文书
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫