vue子路由跳转实现tab选项卡


Posted in Javascript onJuly 24, 2019

现在很多的后台管理系统都采用tab选项卡的布局,左边是导航栏固定,右边是对应的页面,每次点击左边的导航标题,只有右面的对应页面再切换,而vue要做tab选项卡,推荐使用<router-link></router-link>实现a标签的效果,然后使用<router-view></router-view>实现插槽的效果,把对应的页面 "塞" 进去,具体实现看下面的案例:

1、这是tab选项卡的页面,布局就不说了,主要是<router-link :to="a.url" :key="index" v-for="(a,index) in Data">{{a.title}}</router-link>,其中to指向你要跳转的路径,这是关键,而<router-view></router-view>就是最终其他子页面要显示的地方

<template>
  <div class="index-box">
    <nav>
      <h1>导航</h1>
      <!-- 所有的导航标题,进行路由跳转指向 -->
      <router-link :to="a.url" :key="index" v-for="(a,index) in Data">{{a.title}}</router-link>
    </nav>
    <div class="content">
      <!-- 路由插槽:路由跳转的位置 -->
      <router-view></router-view>
    </div>
 
  </div>
</template>
 
<script>
  import navData from "../../static/data/nav"
  export default {
    name: "Index",
    data(){
      return {
        Data:[]
      }
    },
    methods:{
      init(){
        this.Data = navData.navData;
      }
    },
    created(){
      this.init();
    }
  }
</script>
 
<style scoped>
  /* 容器 */
  .index-box{
    width: 100%;
    height: 100%;
    background: #212224;
    display: flex;
  }
  /* 左侧导航条 */
  nav{
    width: 260px;
    height: 100%;
    background: #323437;
    overflow: hidden;
    float: left;
  }
  /* 导航 */
  nav h1{
    color: #f2ffff;
    margin: 10px 0 10px 10px;
  }
  /* 导航标题 */
  nav a{
    display: block;
    width: 100%;
    height: 45px;
    color: #f2ffff;
    background: #2e3033;
    padding-left: 10px;
    line-height: 45px;
    font-size: 20px;
    margin-bottom: 10px;
  }
  /* 右侧内容 */
  .content{
    flex: 1;
    padding: 20px;
  }
</style>

2、路由配置

这个案例中,默认显示的就是我tab选项卡的页面,所以其他子页面我就以这个页面配置的子路由

如果有其他需求,就再需要的地方配置子路由即可

import Vue from 'vue'
import Router from 'vue-router'
// 首页
import Tab from "../pages/Tab"
// 页面一
import PageOne from "../pages/PageOne"
// 页面二
import PageTwo from "../pages/PageTwo"
// 页面三
import PageThree from "../pages/PageThree"
 
Vue.use(Router);
 
export default new Router({
 routes: [
  {
    // 默认显示的页面
    path: '/',
    name: 'Tab',
    component: Tab,
    children:[
      {  
        // 子路由中默认显示的页面
        path: '',
        name: 'PageOne',
        component: PageOne
      },
      {
        path: 'PageTwo',
        name: 'PageTwo',
        component: PageTwo
      },
      {
        path: 'PageThree',
        name: 'PageThree',
        component: PageThree
      }
    ]
  }
 ]
})

这里再提供一种情况:比如我默认显示的是登录页面,登录进入后是首页,是tab选项卡的布局,所以我只要给首页配置子路由就可以了

import Vue from 'vue'
import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'
// 首页框架
import Index from "../pages/Index";
// 首页
import FunctionsIndex from "../components/Functions/FunctionsIndex";
// 数据源列表
import FunctionsDbSource from "../components/Functions/FunctionsDbSource"
// 角色管理
import FunctionsRoleManagement from "../components/Functions/FunctionsRoleManagement"
// 登录
import Login from "../pages/Login"
Vue.use(Router);
 
 
export default new Router({
 linkExactActiveClass: "act",
 mode: "history",
 routes: [
  {
   // 首页
   path: '/Index',
   name: 'Index',
   component: Index,
   children: [
    {
     // 首页中默认显示统计页面
     path: '',
     name: 'Total',
     component: FunctionsIndex
    },
    {
     path: 'DbSource',
     name: 'DbSource',
     component: FunctionsDbSource
    },
    {
     path: 'RoleManagement',
     name: 'RoleManagement',
     component: FunctionsRoleManagement
    }
   ]
  },
   // 默认显示登录页面
  {
   path: '/',
   name: 'Login',
   component: Login
  }
 ]
})

3、配置json文件

因为每个系统,侧边栏的导航标题都不一样,而且也不能保证后期不会再加,所以我推荐把导航标题提出来,到时候只要v-for循环<router-link>就可以了(循环具体操作返回上面看第一个代码块),然后在选项卡页面引入json,在vue方法中把它赋值给data中的变量,创建后调用方法即可,之后再增加导航标题,只需要在json中增加即可

{
 "navData":[
 {
  "title":"子页一",
  "url":"/"
 },
 {
  "title":"子页二",
  "url":"/PageTwo"
 },
 {
  "title":"子页三",
  "url":"/PageThree"
 }
 ]
}

4、之后写好其他页面,就能实现这个效果了

<template>
  <h1>这是子页一,默认显示</h1>
</template>
 
<script>
  export default {
    name: "PageOne"
  }
</script>
 
<style scoped>
  h1{
    color: #f2ffff;
  }
</style>

效果图:

vue子路由跳转实现tab选项卡

再追加一个上面所说的默认是登录页面,然后登录成功后显示首页的tab选项卡的效果图,因为没开数据库,我就模拟演示一下,手动登录成功进入主页:

vue子路由跳转实现tab选项卡

好了,以上就完成了一个简单的tab选项卡布局,大家去试试吧。

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

Javascript 相关文章推荐
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
很棒的Bootstrap选项卡切换效果
Jul 01 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
提升页面加载速度的插件InstantClick
Sep 12 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
vue实现在v-html的html字符串中绑定事件
Oct 28 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 Javascript
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 #Javascript
Vue.js路由实现选项卡简单实例
Jul 24 #Javascript
vue滚动tab跟随切换效果
Jun 29 #Javascript
Vue.js实现tab切换效果
Jul 24 #Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 #Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 #Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 #Javascript
You might like
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP注释实例技巧
2008/10/03 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
js form action动态修改方法
2008/11/04 Javascript
Js sort排序使用方法
2011/10/17 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
python模拟enum枚举类型的方法小结
2015/04/30 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
Pandas的数据过滤实现
2021/01/15 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
大学生饮食配送创业计划书
2014/01/04 职场文书
国际商务专业职业生涯规划书范文
2014/01/17 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
法定授权委托证明书
2014/09/27 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server