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 相关文章推荐
Mootools 1.2教程 滑动效果(Slide)
Sep 15 Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
js优化针对IE6.0起作用(详细整理)
Dec 25 Javascript
js的alert弹出框出现乱码解决方案
Sep 02 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
jQuery基于ajax操作json数据简单示例
Jan 05 Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
Dec 27 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 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 万年历实现代码
2012/10/18 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
讲解Python中if语句的嵌套用法
2015/05/14 Python
Django自定义认证方式用法示例
2017/06/23 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python基于requests库爬取网站信息
2020/03/02 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
《只有一个地球》教学反思
2014/02/14 职场文书
完整版商业计划书
2014/09/15 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
西安大雁塔导游词
2015/02/10 职场文书
中秋节慰问信
2015/02/15 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
美丽的大脚观后感
2015/06/03 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL