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 相关文章推荐
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
Dec 17 Javascript
jQuery的选择器中的通配符使用介绍
Mar 20 Javascript
jquery实现当滑动到一定位置时固定效果
Jun 17 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
JS使用cookie设置样式的方法
Jun 30 Javascript
vue小图标favicon不显示的解决方案
Sep 19 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
Mar 21 Javascript
详解JavaScript栈内存与堆内存
Apr 04 Javascript
如何在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函数的常用方法及注意之处小结
2011/07/10 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
PHP连接MySQL数据库并以json格式输出
2018/05/21 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
python样条插值的实现代码
2018/12/17 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
浅析Django中关于session的使用
2019/12/30 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
任课老师推荐信范文
2013/11/24 职场文书
个人教师自我评价范文
2013/12/02 职场文书
董事长助理工作职责
2014/06/08 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
邀请函怎么写
2015/01/30 职场文书
军事博物馆观后感
2015/06/05 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python