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 相关文章推荐
cssQuery()的下载与使用方法
Jan 12 Javascript
让FireFox支持innerText的实现代码
Dec 01 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
Oct 24 Javascript
jquery简单实现鼠标经过导航条改变背景图
Dec 17 Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 Javascript
JavaScript时间转换处理函数
Apr 14 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
jQuery实现穿梭框效果
Jan 19 jQuery
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
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
Jquery基础教程之DOM操作
2015/08/19 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
详解ES6中的let命令
2020/04/05 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Python实战购物车项目的实现参考
2019/02/20 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python自定义一个异常类的方法
2019/06/27 Python
python多线程扫描端口(线程池)
2019/09/04 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
科技之星事迹材料
2014/06/02 职场文书
2014年教务处工作总结
2014/12/03 职场文书
优秀团员自我评价
2015/03/10 职场文书
Python数据类型最全知识总结
2021/05/31 Python