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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
alert和confirm功能介绍
May 21 Javascript
jquery获取当前元素索引值用法实例
Jun 10 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
Nov 11 Javascript
Bootstrap基本样式学习笔记之表单(3)
Dec 07 Javascript
zTree树形插件异步加载方法详解
Jun 14 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
Vue中axios的封装(报错、鉴权、跳转、拦截、提示)
Aug 20 Javascript
vue treeselect获取当前选中项的label实例
Aug 31 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使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
javascript中的缓动效果实现程序
2012/12/29 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
Python中django学习心得
2017/12/06 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
nohup的用法
2012/11/26 面试题
七年级生物教学反思
2014/01/30 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
人力资源管理求职信
2014/08/07 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫