Elementui tabs组件内添加组件
1. Elementui tabs组件内添加组件
1.1. 需求
今天的一个需求是在后台框架的基础上添加tab页,结果页面如下
原本上述红框内的内容是不存在的,直接点击左侧菜单栏进行页面跳转,现加了tab标签栏,实现快速的跳转
1.2. 实现
- 具体要根据自己的route实现类进行筛选,核心vue如下
<template><div><el-tabs v-model="TabsValue" type="card" closable @tab-remove="removeTab"><el-tab-pane style="border-radius: 3px" v-for="(item, index) in Tabs" :key="item.name" :label="item.title" :name="item.name"><tab-component style="border-radius: 3px;margin: -15px 10px 0px 10px;" :index="index" :name="index"></tab-component></el-tab-pane></el-tabs></div>
</template>
<script>import Vue from 'vue'export default {name: 'TabBar',data(){return {uniqueOpened: true,TabsValue: '',Tabs: [],index:0,tabComponent:{}}},methods: {addOneTab(menu) {var exist = false;for (var i = 0; i < this.Tabs.length; i++) {if (menu.name === this.Tabs[i].name) {exist = true;break}}if (exist === true) {this.TabsValue = menu.name;return}this.Tabs.push({title: menu.name,name: menu.name,content: menu.component});var _this = this;this.tabComponent = Vue.component('tab-component', {render: function (h) {var comp = _this.Tabs[this.index].content;return h(comp)},props: {index: {type: Number,required: true}}});this.TabsValue = menu.name},addTab(e) {let first = "/"+e.split("/")[1];let two = e.split("/")[2];let tempRoutes = this.$router.options.routes;for (let i = 0; i < tempRoutes.length; i++) {let temp = tempRoutes[i];if (temp.path === first) {for (let j = 0; j < temp.children.length; j++) {let child = temp.children[j];if (child.path === two) {let menu = {};menu.name = child.meta.title;menu.component = child.component;this.addOneTab(menu);}}}}},removeTab(targetName) {let tabs = this.Tabs;let activeName = this.TabsValue;if (activeName === targetName) {tabs.forEach((tab, index) => {if (tab.name === targetName) {let nextTab = tabs[index + 1] || tabs[index - 1];if (nextTab) {activeName = nextTab.name;}}});}this.TabsValue = activeName;this.Tabs = tabs.filter(tab => tab.name !== targetName);}}}
</script>
- 上述是tab的实现,再就是菜单选择调用tab的addTab方法
<el-menu @select="addTab" mode="vertical" unique-opened :default-active="$route.path" :collapse="isCollapse"background-color="#304156" text-color="#fff" active-text-color="#409EFF"><sidebar-item :routes="routes"></sidebar-item>
</el-menu>addTab(e) {this.$refs.tabBar.addTab(e);
}
- 上面代码会看着有点奇怪,因为
SideBar
,也就是上述的el-menu
所在组件和tab
是平级的,如下
<template><div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}"><sidebar ref="sidebar" @addTab="addTab" class="sidebar-container"></sidebar><div class="main-container"><navbar></navbar><tab-bar ref="tabBar"></tab-bar><app-main></app-main></div></div>
</template>
siderBar
和tab-bar
在同一个组件内,所以要实现参数传递,需要先emit提交事件,再在父组件传递给另一个子组件,这样链路就完整了,没看懂我的看下面的参考吧,我也是参考它的结合自己的代码实现
1.3. 参考
- 参考自该问答陶通的回答
转载于:https://www.cnblogs.com/sky-chen/p/10975234.html
Elementui tabs组件内添加组件相关推荐
- 在 Element-UI 的 Table 组件上添加列拖拽效果
在 Element-UI 的 Table 组件上添加列拖拽效果 一.数据驱动 传统的拖动效果,都是基于通过 mousedown.mousemove.mouseup 事件来修改删减 dom 节点 但 V ...
- form-create教程:给内置组件和自定义组件添加事件
本文将介绍form-create如何给内置组件和自定义组件添加事件 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue ...
- 无界微前端(wujie):element-ui 弹框内使用select组件,弹出框位置异常解决方案
element-ui 弹框内使用select组件,弹出框位置异常解决方案 只需三步,第一步: 将子应用将 body 设置为 position: relative 第二步: 在子应用的html上设置个 ...
- VUE element-ui之百度OCR证件识别,组件内证件照转码解码识别身份证照文字
步骤: 接上一篇博文继续完善获取access_token 封装Base64照片转码方法: const identification = {// 将图片转为base64格式transformBase64 ...
- VUE内置组件 vue使用插槽分发内容 组件缓存 实现动画的过渡效果
动态组件 除了允许用户自定义组件之外,Vue还内置了一些组件,以帮助用户高效地开发一些功能.本章将带领大家一起来了解这些内置组件. 某些时候需要动态切换页面部分区域的视图,这个时候内置组件compon ...
- vue中怎么清空tab选项卡的缓存_vuejs 内置组件component实现tab切换懒加载和表单输入框内容的清空...
最近项目中使用了vue2.0 官网脚手架进行了开发.开发中的踩一些坑一直没有来得及整理.本篇文章就vuejs内置组件component的一些使用进行一些总结. 1.使用component 实现tab切 ...
- 一个基于vue和element-ui的树形穿梭框组件
el-tree-transfer 简介 因为公司业务使用vue框架,ui库使用的element-ui.在市面上找到一个好用的vue树形穿梭框组件都很难,又不想仅仅因为一个穿梭框在element-ui之 ...
- vue3 内置组件keep-alive用法的全面介绍
vue3 内置组件keep-alive用法的全面介绍 基础用法 首先看一个反面例子 const app = Vue.createApp({template: `<button v-for=&qu ...
- 【Vue-仿照element-ui自己动手封装ui组件】—— alert、confirm 弹窗
概述 很久之前就一直想要自己搭建一个个人博客,但下班回家的我只想做条咸鱼,这两天周末闲着没事干有想起了这件事,但从何下手?看了一下主流的几个ui框架挺好看的但大家都在用没有新鲜感,于是决定自己试着做一 ...
- react 动态添加组件属性_这么高质量React面试题(含答案),看到就是赚到了!...
前言 本文篇幅较长,全是干货,建议亲们可以先收藏慢慢看哦 写文不易,欢迎大家一起交流,喜欢文章记得关注我点个赞哟,感谢支持! Q1 :什么是虚拟DOM? 难度::star: 虚拟DOM(VDOM)它是 ...
最新文章
- Linux下编译build的命令,Linux命令行下编译Android NDK的示例代码
- HTML DOM那点儿事儿
- 具有CDI和lambda的策略模式
- rsync配置和使用
- Qt文档阅读笔记-Timer QML Type 官方解析与实例
- Spring Boot 问题记录
- setValuesForKeysWithDictionary:的用途
- ios app 提交评审注意事项
- C语言实例:三个数从小到大排序
- 路由器的工作原理定义
- linux添加jetdirect协议,如何设置 HP JetDirect 设备的网络安全性?
- 轻量android模拟器,夜神安卓模拟器6.2.0.0版:开启专业“特需”服务
- POI实现Excel文件加密
- JAVA使用wkhtmltopdf 将Html 导出PDF
- js 金额千分位转换
- 51单片机 AT24C04+蜂鸣器+Proteus仿真
- 求以log2为底的对数值
- 关于.net framework4.0安装失败,“安装时发生严重错误”
- 100阶乘的约数个数
- 远征日服·信喵之野望 按键精灵脚本4.截卡