vue-router实现tab标签页(单页面)详解


Posted in Javascript onOctober 17, 2017

vue-router 是 Vue.js 官方的路由插件,适合用于构建标签页应用。Vue 的标签页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来,vue-router 会把各个组件渲染到正确的地方。

首先,.vue中的内容非常简单,<router-link>创建标签,并指定路径,<router-view>渲染路由匹配到的组件。

<template> 
 <div id="account"> 
 <p class="tab"> 
 <!-- 使用 router-link 组件来导航. --> 
 <!-- 通过传入 `to` 属性指定链接. --> 
 <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> 
 <router-link to="/account/course">我的课程</router-link> 
 <!-- 注意这里的路径,course和order是account的子路由 --> 
 <router-link to="/account/order">我的订单</router-link> 
 </p> 
 <!-- 路由出口 --> 
 <!-- 路由匹配到的组件将渲染在这里 --> 
 <router-view></router-view> 
 </div> 
</template>

结构很简单,我们有一个账户页 account,account 中还包含两个标签页,分别是课程 course 和订单 order。
在写路由的时候,需要注意页面间层级关系,开始我是这样写的:

import Vue from 'vue' 
import Router from 'vue-router' 
import Account from ... 
import CourseList from ... 
import OrderList from ... 
 
Vue.use(Router) 
 
export default new Router({ 
 routes: [ 
 { 
 path: '/account', 
 name: 'account', 
 component: Account 
 }, 
 { 
 path: '/my-course', 
 name: 'course', 
 component: CourseList 
 }, 
 { 
 path: '/my-order', 
 name: 'order', 
 component: OrderList 
 } 
 ] 
})

这样做会使得点击 <router-link> 时,跳转到新页面,而不是在 <router-view> 中显示组件。
正确的路由应该这样写:

routes: [ 
 { 
 path: '/account', 
 name: 'account', 
 component: Account, 
 children: [ 
 {name: 'course', path: 'course', component: CourseList}, 
 {name: 'order', path: 'order', component: OrderList} 
 ] 
 } 
]

注册一个根路由 account,将 course 和 order 注册为 account 中的子路由,和 <router-link> 中 to="account/course" 对应。 

刚开始做 Vue,这个问题困扰了很久,特此记录。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程、Vue.js前端组件学习教程,进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript代码加载优化方法
Jan 30 Javascript
Jquery 自定义动画概述及示例
Mar 29 Javascript
如何将php数组或者对象传递给javascript
Mar 20 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
JS中获取函数调用链所有参数的方法
May 07 Javascript
js实现打地鼠小游戏
Feb 13 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
Javascript中的getter和setter初识
Aug 17 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 Javascript
BACKBONE.JS 简单入门范例
Oct 17 #Javascript
JS获取一个表单字段中多条数据并转化为json格式
Oct 17 #Javascript
JS解决position:sticky的兼容性问题的方法
Oct 17 #Javascript
JS实现div模块的截图并下载功能
Oct 17 #Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 #Javascript
AngularJS 控制器 controller的详解
Oct 17 #Javascript
VUE前端cookie简单操作
Oct 17 #Javascript
You might like
PHP 程序授权验证开发思路
2009/07/09 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
js实现无缝滚动图
2017/02/22 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
详解Python中namedtuple的使用
2020/04/27 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
python对execl 处理操作代码
2020/06/22 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
用python对oracle进行简单性能测试
2020/12/05 Python
python math模块的基本使用教程
2021/01/16 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
大学生毕业自我评价范文分享
2013/11/11 职场文书
专业销售业务员求职信
2013/11/18 职场文书
亲子活动总结
2014/04/26 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers