vue+element实现多标签页导航教程

 更新时间:2026年07月01日 15:20:39   作者:熊叁(san)  
本文介绍了使用element-ui的el-tab标签页实现左侧菜单和多页面标签导航的功能,详细描述了实现过程及遇到的弹窗背景遮罩问题,供开发者参考

项目需求

实现左侧菜单栏,右边内容区的顶部有个导航栏,每打开一个页面,右边导航栏就多一个标签,打开的页面缓存下来,可以实现多页面切换。

有两种思路

1.element-ui的el-tab标签页实现。

2.网上看的有个比较复杂的做法,我没采用,但是我把具体代码写了出来,可供参考。

我用的是第一种方法,具体这周末补齐。

这两种做法都会出现一个问题

element弹窗背景遮罩的问题,周末一并解决

<el-tabs v-model="pageCurrent" type="card" closable @tab-click='tabChange' @tab-remove="removeTab">
	<el-tab-pane v-for="(item) in pageList"
		:key="item.name"
		:name="item.name">
		<span slot="label">
			<span>{{item.label}}</span>
			<span class="refresh">
				<i style="font-size:15px;" @click="refreshModule" class="el-icon-refresh" ></i> 
			</span>
		</span>
	</el-tab-pane> 
</el-tabs>
<keep-alive :exclude="exclude">
    <router-view v-if="condition" ref="view" />
</keep-alive>
data() {
	return {
		pageCurrent:'',
		pageList:[],
		exclude:null,
		condition:true,
	}
},
watch: {
	$route: {
		handler(to,form=null){
			//当路由改变时,检测该路由是否已经在打开的页面之中,如果不在,就添加进去
			this.pageCurrent = to.path;
		},
		immediate: true
	}
},
methods: {
	removeTab(targetName){
		let tabs = this.pageList;
		let activeName = this.pageCurrent;
		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.pageCurrent = activeName;
		this.pageList = tabs.filter(tab => tab.name !== targetName);
		this.$router.push({path:activeName})
	},
	tabChange(tab,event){
		this.$router.push({path:tab.name})
	},
	refreshModule(){
		this.exclude = this.$refs.view.$options.name;
		this.condition = !this.condition
		this.$nextTick(_ => {
			this.exclude = null
			this.condition = !this.condition
		})
	},
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue 用Vant实现时间选择器的示例代码

    Vue 用Vant实现时间选择器的示例代码

    这篇文章主要介绍了Vue 用Vant实现时间选择器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 使用ElementUI中el-upload上传文件转base64格式

    使用ElementUI中el-upload上传文件转base64格式

    这篇文章主要介绍了使用ElementUI中el-upload上传文件转base64格式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • vue组件之间通信实例总结(点赞功能)

    vue组件之间通信实例总结(点赞功能)

    这篇文章主要介绍了vue组件之间通信,结合实例形式分析了vue父子组件、兄弟组件之间通信的原理、实现方法,并给出了一个类似点赞功能的总结实例,需要的朋友可以参考下
    2018-12-12
  • vue3中标签form插件的使用教程详解

    vue3中标签form插件的使用教程详解

    这篇文章主要为大家详细介绍了vue3中标签form插件的使用的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以了解下
    2024-01-01
  • Vue form表单动态添加组件实战案例

    Vue form表单动态添加组件实战案例

    这篇文章主要介绍了Vue form表单动态添加组件实战案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Vue.js实现九宫格图片展示模块

    Vue.js实现九宫格图片展示模块

    这篇文章主要为大家详细介绍了Vue.js实现九宫格图片展示模块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • vue3.0如何使用computed来获取vuex里数据

    vue3.0如何使用computed来获取vuex里数据

    这篇文章主要介绍了vue3.0如何使用computed来获取vuex里数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • element表格数据部分模糊的实现代码

    element表格数据部分模糊的实现代码

    这篇文章给大家介绍了element表格数据模糊的实现代码,文中有详细的效果展示和实现代码供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-01-01
  • el-upload二次封装带表格校验组件

    el-upload二次封装带表格校验组件

    本文介绍了一个前端Excel文件上传校验组件的实现方案,该组件基于Element UI的el-upload封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • Vue实现全选多个选择框

    Vue实现全选多个选择框

    使用v-model绑定布尔变量实现全选功能:定义数组存储状态,使用v-for循环渲染选择框,绑定状态;添加全选复选框,绑定布尔变量;使用watch监听全选复选框状态变化,更新数组中每一项的状态
    2025-01-01

最新评论