vue elementUI使用tabs与导航栏联动


Posted in Javascript onJune 21, 2019

不使用tabs标签页时,点击导航菜单,router-view映射相应的组件即可显示页面。但我们想在点击导航栏时在tabs中映射相应的组件,这就需要使用tabs组件
在slider.vue中点击路由后,把当前选择的路由@select使用bus传出去

<el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" background-color="#eeefef" text-color="#666" active-text-color="#20a0ff" unique-opened router @select="addTab">

 <!-- 一级菜单 -->
  <template v-for="item in slidebarData" >
  <el-submenu v-if="item.subs && item.subs.length" :index="item.index" :key="item.index">
   <template slot="title"><i :class="item.icon"></i><span>{{item.title}}</span></template>

   <!-- 二级菜单 -->
   <template v-for="itemChild in item.subs">
   <el-submenu v-if="itemChild.subs && itemChild.subs.length" :index="itemChild.index" :key="itemChild.index" class="erji">
    <template slot="title"><i :class="itemChild.icon"></i><span>{{itemChild.title}}</span></template>

    <!-- 三级菜单 -->
    <el-menu-item v-for="itemChild_Child in itemChild.subs" :index="itemChild_Child.index" :key="itemChild_Child.index">
    <i :class="itemChild_Child.icon"></i><span slot="title">{{itemChild_Child.title}}</span>
    </el-menu-item>
   </el-submenu>

   <el-menu-item v-else :index="itemChild.index" :key="itemChild.index"><i :class="itemChild.icon"></i><span slot="title">{{itemChild.title}}</span></el-menu-item>
   </template>
  </el-submenu>

  <el-menu-item v-else :index="item.index" :key="item.index"><i :class="item.icon"></i><span slot="title">{{item.title}}</span></el-menu-item>
  </template>

 </el-menu>

使用bus把路由信息传出

import bus from '../common/bus';
methods: {
 addTab(key,keyPath) {
 console.log(key,keyPath)
 bus.$emit('navPath',keyPath)
 }
},

在tabs.vue中接收

<template>
 <div id="tabs">
 <el-tabs type="card" v-model="tabsVal" @tab-remove="closeTab" @tab-click="tabclick">
  <el-tab-pane v-for="item in tabList" :key="item.name" :name="item.name" :label="item.title" :closable="item.closable" >
        <component :is="item.component"></component>
      </el-tab-pane>
 </el-tabs>
 </div>
</template>

<script>
 import searchFor from '../page/ContentManagement/Class/searchFor.vue';
 import bus from '../common/bus';
 export default {
 data() {
  return {
  inputVisible: false,
  navPath: '',
  tabsVal: "searchFor",
  tabList: [
   {
        title: '热门搜索',
        name: 'searchFor',
        disabled: true,
        closable: false,
        component: searchFor
      }
  ]
  }
 },
 methods: {
  closeTab(tag) {//关闭tabs
  var tabListName = []
  for(let i = 0; i < this.tabList.length; i++){
   tabListName[i] = this.tabList[i].name;
  }
  console.log(tabListName)
  this.tabList.splice(tabListName.indexOf(tag), 1);
  this.tabsVal = "searchFor";
  this.$router.push("searchFor");
  },
  tabclick(val) {
  console.log(val)
  this.$router.push(val.name);
  //点击tabs触发路由跳转,到相应路由
  }
 },
 mounted () {
     bus.$on('navPath',(name,val) =>{//处理传过来的值
      console.log(name)
       var titname;
       if(name[name.length -1] == 'searchFor'){
        titname = '热门搜索'
       }else if(name[name.length -1] == 'Courier1'){
        titname = '套课列表'
       }else if(name[name.length -1] == 'Courier2'){
        titname = '小节列表'
       }else if(name[name.length -1] == 'Courier3'){
        titname = '套课分享'
       }
       if (this.tabList.filter(f => f.name == name[name.length -1]) == 0) {
        var component = resolve => require([`../page/ContentManagement/${name[0]}/${name[name.length -1]}`], resolve)//合伙人管理
        this.tabList.push({
          title: titname,
          name: name[name.length -1],
          disabled: false,
          closable: true,
          component: component
        })
       }
       this.tabsVal = name[name.length -1]
     });
    }
 }
</script>

<style scoped>
 #tabs {
 position: fixed;
 right: calc(2vw - 2px);
 top: 100px;
 z-index: 5;
 width: calc(96% - 189px);
 height: 38px;
 background: #f0f0f0;
 border-bottom: 4px solid #ccc;
 border-top: 4px solid #ccc;
 padding-left: 10px;
 }
 
 .el-tag {
 margin: 3px;
 }
 
</style>

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

Javascript 相关文章推荐
JQUERY操作JSON实例代码
Feb 09 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
javascript数组遍历for与for in区别详解
Dec 04 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
noty ? jQuery通知插件全面解析
May 18 Javascript
新入门node.js必须要知道的概念(必看篇)
Aug 10 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
如何在vue中使用ts的示例代码
Feb 28 Javascript
详解React中setState回调函数
Jun 14 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
详解vue 图片上传功能
Apr 30 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 #Javascript
vue配置文件实现代理v2版本的方法
Jun 21 #Javascript
微信小程序自定义多列选择器使用详解
Jun 21 #Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 #Javascript
Vue多环境代理配置方法思路详解
Jun 21 #Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 #Javascript
使用express来代理服务的方法
Jun 21 #Javascript
You might like
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
PHP获取文件后缀名的三个函数
2012/10/15 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python读取几个G的csv文件方法
2019/01/07 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
C#笔试题
2015/07/14 面试题
jQuery treeview树形结构应用
2021/03/24 jQuery
村居抓节水倡议书
2014/05/19 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
金陵十三钗观后感
2015/06/04 职场文书
小平小道观后感
2015/06/09 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
golang slice元素去重操作
2021/04/30 Golang
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers