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 相关文章推荐
一段利用WSH修改和查看IP配置的代码
May 11 Javascript
Tips 带三角可关闭的文字提示
Oct 06 Javascript
读jQuery之五(取DOM元素)
Jun 20 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
Javascript快速排序算法详解
Dec 03 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
node.js 中间件express-session使用详解
May 20 Javascript
微信小程序缓存过期时间的使用详情
May 12 Javascript
基于iview的router常用控制方式
May 30 Javascript
layui表格数据复选框回显设置方法
Sep 13 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 处理图片的类实现代码
2009/10/23 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
php实现小程序支付完整版
2018/10/09 PHP
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python易忽视知识点小结
2015/05/25 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
学雷锋宣传标语
2014/06/25 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
导游词之南京栖霞山
2019/10/18 职场文书