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 相关文章推荐
Highslide.js是一款基于js实现的网页中图片展示插件
Mar 30 Javascript
浅谈js中的闭包
Mar 16 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
JavaScript用构造函数如何获取变量的类型名
Dec 23 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
详解JSON.stringify()的5个秘密特性
May 26 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
php Ajax乱码
2008/04/09 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
计算机网络专业推荐信
2013/11/24 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
婚礼答谢词范文
2015/09/29 职场文书
党员心得体会范文2016
2016/01/23 职场文书