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 相关文章推荐
js加强的经典分页实例
Mar 15 Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
May 10 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
vue使用codemirror的两种用法
Aug 27 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
JavaScript中的执行环境和作用域链
Sep 04 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
vue实现数据控制视图的原理解析
2020/01/07 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
Python 模板引擎的注入问题分析
2017/01/01 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
python实现键盘控制鼠标移动
2020/11/27 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
python字符串查找函数的用法详解
2019/07/08 Python
Python如何实现机器人聊天
2020/09/10 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
网络技术专业推荐信
2014/02/20 职场文书
静心口服夜广告词
2014/03/20 职场文书
承诺书的格式范文
2014/03/28 职场文书
2014最新股权信托合同协议书
2014/11/18 职场文书
爱晚亭导游词
2015/02/09 职场文书
离婚协议书范文2016
2016/03/18 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
python字符串常规操作大全
2021/05/02 Python
Python Parser的用法
2021/05/12 Python
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
MySQL里面的子查询的基本使用
2021/08/02 MySQL
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android