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扩展自写的 UI导航
Jan 13 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
Javascript实现单张图片浏览
Dec 18 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
不能不知道的10个angularjs英文学习网站
Mar 23 Javascript
学习使用bootstrap3栅格系统
Apr 12 Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
JavaScript数组去重的几种方法效率测试
Oct 23 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 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导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
详解javascript appendChild()的完整功能
2018/08/18 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
python读写json文件的简单实现
2017/04/11 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
利用python画出AUC曲线的实例
2020/02/28 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
房产销售经理职责
2013/12/20 职场文书
银行存款证明样本
2014/01/17 职场文书
寄语是什么意思
2014/04/10 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang