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 相关文章推荐
jQuery回车实现登录简单实现
Aug 20 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
Aug 07 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
JS之相等操作符详解
Sep 13 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
webpack 样式加载的实现原理
Jun 12 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
react 应用多入口配置及实践总结
Oct 17 Javascript
js面向对象编程OOP及函数式编程FP区别
Jul 07 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简单实现加减乘除计算器
2014/01/06 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python中round函数如何使用
2020/06/19 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
J2EE包括哪些技术
2016/11/25 面试题
新学期班主任寄语
2014/01/18 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
pt-archiver 主键自增
2022/04/26 MySQL
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle