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 相关文章推荐
JavaScript 对象链式操作测试代码
Apr 25 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
JS读写CSS样式的方法汇总
Aug 16 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
Feb 10 Javascript
浅谈开发eslint规则
Oct 01 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
elementUI同一页面展示多个Dialog的实现
Nov 19 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中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
php的ddos攻击解决方法
2015/01/08 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
jQuery load方法用法集锦
2011/12/06 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
shiro授权的实现原理
2017/09/21 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
python与php实现分割文件代码
2017/03/06 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python 内置函数汇总详解
2019/09/16 Python
利用python汇总统计多张Excel
2020/09/22 Python
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
《中华少年》教学反思
2014/02/15 职场文书
公司股权转让协议书
2014/04/12 职场文书
灵山大佛导游词
2015/02/04 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
python3美化表格数据输出结果的实现代码
2021/04/14 Python
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python