首页 > 其他分享 >vue - 菜单栏联动选项卡

vue - 菜单栏联动选项卡

时间:2024-10-24 15:15:05浏览次数:8  
标签:vue 选项卡 val 菜单栏 router 路由 view

在 vue 环境下,制作一个与菜单联动的选项卡(el-tabs)。

能看到这个文章,大体是有自己动手的打算了,这里给一下关键思路。

关键点

路由的设计

传统的选项卡设计,一般通过 iframe 实现,在 vue 环境中,则是使用 router-view。

问题是,一个界面上,同时存在多个 router-view(如果不做标记),内容是完全一致的,

所以,我们要设计好逻辑,每次只显示一个 router-view。

做法倒是比想得简单,就是通过 v-if 控制,只保留一个 router-view。

页面缓存

传统的选项卡设计,一般是通过显示、隐藏实现的,切换回之前的界面,数据会保存在界面上。

通过 v-if 控制显示隐藏,不会有缓存效果的,这时候,就要用到 keep-alive 标签,keep-alive 会帮助我们缓存之前的数据。

路由侦听

路由的封装方式有很多,我个人推荐的做法是,通过 watch 侦听路由的变化。

这样做有什么好处?除了界面上的按钮点击事件,浏览器返回按钮、history-back 等等,都会引起的路由变化,直接 watch 是最直接的方式。

路由参数

路由是有可能带参数的,因此需要注意浏览器刷新等特殊情况,因此要注意保留参数;

比较粗暴的解决方案,就是刷新完,直接清空选项卡,虽然会觉得不合常理,但是一般也能接受。

代码样例

这里就给个简单的案例,体验一下效果,相信能受到启发,画出自己想要的效果。

<template>
	 <el-main ref="main" v-if="panelHeight" :style="panelHeight" class="main-container">
	  <el-input v-model="val"></el-input>
	  <!--中央控制面板-->
	  <el-row>
		<el-col :span="12">
		  <span>panel 1</span>
		  <keep-alive>
			<router-view v-if="val === '1'"/>
		  </keep-alive>
		</el-col>
		<el-col :span="12">
		  <span>panel 2</span>
		  <keep-alive>
			<router-view v-if="val === '2'"/>
		  </keep-alive>
		</el-col>
	  </el-row>
	</el-main>
</template>
<script>

/**
 * 首页
 */
export default {
    components: {
    },
    name: "home",
    watch: {
        $route: {
            /**
             * 侦听路由变化,更新选项卡数据
             */
            handler(val) {
                if (val.path !== 'ignore' && val.path !== '/') {
                    // todo sth.
                }
            }
            , immediate: true
            , deep: false
        }
    },
    data() {
        return {     
            val: '1'
        };
    }
}
</script>

标签:vue,选项卡,val,菜单栏,router,路由,view
From: https://www.cnblogs.com/chenss15060100790/p/18499622

相关文章

  • chrome 控制台console 调用vue页面的方法--来自chatgpt的回答
    问题二:vue2的项目中chrome控制台输入$0.vue会输出什么在Vue2项目中,如果你在Chrome控制台中输入$0.__vue__,这个命令会返回$0当前选中的DOM元素对应的Vue实例。解释:$0:代表ChromeDevTools中当前选中的DOM元素。.vue:这是Vue2中的一个内部属性,它持有与该D......
  • vue - 选项卡右击下拉框
    在element-ui环境下,给选项卡添加右击事件,是相当麻烦的一件事情,主要是麻烦,很多东西都需要注意,并没有太多难点。注意项el-tabs的右击事件事件的名称是contextmenu.prevent.native,这个很快就能找到,需要注意的是:选项卡整个头部都能触发右击事件,需要过滤出哪些事件是由选项卡......
  • vue - 自定义吸附窗口
    业务需求以共享单车界面为例,地图上分布着大量的共享单车,鼠标悬浮在单车上,弹出一个吸附弹窗,内容显示单车详细信息。分析很明显,因为单车的数量可能非常多,我们不可能用显示隐藏的方式实现;合理的做法是,所有单车公用一个弹窗面板,悬浮的时候刷新面板上的数据。方案看着改吧,element......
  • 基于SpringBoot和Vue的地方美食分享与推荐网站的设计与实现(源码+定制+开发)地方美食推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • 基于springboot+vue的Hadoop的高校教学资源平台的设计与实现(源码+lw+部署文档+讲解等
    课题摘要基于SpringBoot+Vue的Hadoop高校教学资源平台是一个功能强大的教学资源管理系统,结合了先进的技术架构和丰富的功能模块,为高校教学提供了高效、便捷的资源共享和管理平台。以下是该平台的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、......
  • 基于Hadoop的热门游戏推荐系统的设计springboot+vue的项目(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop热门游戏推荐系统可以为游戏玩家提供个性化的游戏推荐服务。以下是该系统的设计与实现方案:一、系统功能用户管理用户注册与登录:支持多种注册方式,如手机号码、邮箱等。用户登录后可以管理个人信息。用户偏好设置:用户可以设置......
  • 基于springboot+vue的Hadoop的奶茶数据平台系统(源码+lw+部署文档+讲解等)
    课题摘要基于SpringBoot+Vue的Hadoop奶茶数据平台系统可以为奶茶行业提供全面的数据管理和分析解决方案。以下是该系统的设计与实现方案:一、系统功能数据采集与存储从各种数据源(如门店销售系统、社交媒体、市场调研等)采集奶茶相关数据。使用Hadoop分布式文件......
  • 基于springboot+vue的Hadoop的环境质量数据修复系统设计与实现(源码+lw+部署文档+讲解
    课题摘要基于SpringBoot+Vue的Hadoop环境质量数据修复系统是一个用于处理和修复环境质量数据的强大工具。以下是该系统的设计与实现方案,包括源码、LW(LiveWire)、部署文档和讲解等内容。一、系统概述环境质量数据对于环境保护和决策制定至关重要。然而,由于各种原因......
  • VUEJS实例中DATA属性的三种写法及区别是什么
    Vue.js是一种流行的JavaScript前端框架,用于构建交互式的用户界面。VUEJS实例中DATA属性的三种写法及区别是:1、独立性;2、推荐性;3、ES6语法。其中,独立性是指,使用函数返回一个对象的写法确保了每个组件实例都拥有独立的数据,不会相互影响。而直接使用对象声明DATA属性的写法会导致数......
  • js 富文本转义及反转义(包含vue版本的)
    //js//富文本反转义htmlfunctionescape2Html(str){  vararrEntities={'lt':'<','gt':'>','nbsp':'','amp':'&','quot':'"'};returnst......