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 相关文章推荐
简单的无缝滚动程序-仅几行代码
May 08 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
使用Chrome浏览器调试AngularJS应用的方法
Jun 18 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
JavaScript实现页面无操作倒计时退出
Oct 22 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
vue 实现LED数字时钟效果(开箱即用)
Dec 08 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 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使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
jQuery使用each遍历循环的方法
2018/09/19 jQuery
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
python进阶教程之模块(module)介绍
2014/08/30 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python实现网页自动签到功能
2019/01/21 Python
python批量下载抖音视频
2019/06/17 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
吨的认识教学反思
2014/04/27 职场文书
班级文化建设标语
2014/06/23 职场文书
世界读书日的活动方案
2014/08/20 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
Python类方法总结讲解
2021/07/26 Python
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS