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 相关文章推荐
PPK 谈 JavaScript 的 this 关键字 [翻译]
Sep 29 Javascript
jquery 弹出登录窗口实现代码
Dec 24 Javascript
JS学习之一个简易的日历控件
Mar 24 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 Javascript
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
js的image onload事件使用遇到的问题
Jul 15 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
js判断鼠标位置是否在某个div中的方法
Feb 26 Javascript
node.js实现端口转发
Apr 14 Javascript
jQuery仿移动端支付宝键盘的实现代码
Aug 15 jQuery
vue--点击当前增加class,其他删除class的方法
Sep 15 Javascript
js实现json数组分组合并操作示例
Feb 12 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
DISCUZ 分页代码
2007/01/02 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
JS父页面与子页面相互传值方法
2014/03/05 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
详解Python3中的Sequence type的使用
2015/08/01 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python Kmeans算法原理深入解析
2019/08/23 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
日期和时间问题
2015/01/04 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
护理专业应届毕业生推荐信
2013/11/15 职场文书
会计专业自荐信范文
2013/12/02 职场文书
食堂员工工作职责
2013/12/18 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
中专生自荐信
2014/06/25 职场文书
死亡证明书样本说明
2014/10/18 职场文书
家属答谢词
2015/01/05 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang