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 相关文章推荐
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
jquery中获取select选中值的代码
Jun 27 Javascript
JS格式化数字保留两位小数点示例代码
Oct 15 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
jQuery超简单选项卡完整实例
Sep 26 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
七个不允许错过的jQuery小技巧
Dec 21 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
详解Node 定时器
Feb 26 Javascript
js实现购物车商品数量加减
Sep 21 Javascript
如何在CocosCreator里画个炫酷的雷达图
Apr 16 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
如何使用php实现评委评分器
2015/07/31 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
js实现烟花特效
2020/03/02 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
python网络编程之读取网站根目录实例
2014/09/30 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
PyTorch-GPU加速实例
2020/06/23 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
高中军训感言200字
2014/02/23 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
详细了解java监听器和过滤器
2021/07/09 Java/Android
利用Python多线程实现图片下载器
2022/03/25 Python
css3 选择器
2022/05/11 HTML / CSS