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 相关文章推荐
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
Nov 18 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
Sep 17 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
JS弹性运动实现方法分析
Dec 15 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
May 13 jQuery
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
Oct 23 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
Vue学习笔记之计算属性与侦听器用法
Dec 07 Javascript
JavaScript实现PC端横向轮播图
Feb 07 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防注入安全代码
2008/04/09 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
python的sys.path模块路径添加方式
2020/03/09 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
Java程序员面试90题
2013/10/19 面试题
会计专业毕业生推荐信
2013/11/05 职场文书
学习党章思想汇报
2014/01/07 职场文书
探亲假请假条
2014/04/11 职场文书
教师一岗双责责任书
2014/04/16 职场文书
房产授权委托书范本
2014/09/22 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
个人更名证明
2015/06/23 职场文书
广播体操比赛主持词
2015/06/29 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书