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 相关文章推荐
5个最佳的Javascript日期处理类库分享
Apr 15 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
jQuery下的动画处理总结
Oct 10 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
jQuery的ready方法详解
Nov 27 Javascript
Jquery 实现table样式的设定
Jan 28 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
vue实现登录拦截
Jun 29 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开发注意事项总结
2015/02/04 PHP
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
2018/01/21 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
Python生成随机验证码的两种方法
2015/12/22 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
python实现邮件自动发送
2019/08/10 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
python中pyplot基础图标函数整理
2020/11/10 Python
Python中pass的作用与使用教程
2020/11/13 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
详解HTML5中的标签
2015/06/19 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
行政办公员自我评价分享
2013/12/14 职场文书
小区门卫岗位职责
2013/12/31 职场文书
小学教师节活动方案
2014/01/31 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
2016教师节问候语
2015/11/10 职场文书