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 相关文章推荐
JavaScript实现动态增加文件域表单
Feb 12 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
基于打包工具Webpack进行项目开发实例
May 29 Javascript
Vue实现根据hash高亮选项卡
May 27 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
js判断在哪个浏览器打开项目的方法
Jan 21 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
Apr 30 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 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
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php常用数学函数汇总
2014/11/21 PHP
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
webpack4.x CommonJS模块化浅析
2018/11/09 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python构建网页爬虫原理分析
2017/12/19 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
Python版中国省市经纬度
2020/02/11 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
总经理秘书的岗位职责
2013/12/27 职场文书
护理毕业生自我鉴定
2014/02/11 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
铁路安全事故反思
2014/04/26 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
小学总务工作总结
2015/08/13 职场文书
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers