vue+element后台管理系统+TagsView基础版

2023-11-09

TagsView基础版

1. 使用框架、插件

vue2+element+vuex

2. 大概思路

在这里插入图片描述

  • 大概需求:

1、从效果图看,【人类】这个首页的tag一开始就存在,且不能被删除
2、当点击左侧栏的时候,如果没有与该菜单相应的tag则新增,如果存在,变成选中状态
3、删除tag时,存在几种情况,若删除的tag是当前页面的tag,那么路由就要跳转;如果删除的tag不是当前页面的tag,则不需要跳转路由
4、若删除的tag是当前页面的tag,有分两种情况:如果是最后一个tag被删,那往前一个tag跳转相应的路由;如果不是最后一个tag,则往其后一个tag跳转相应的路由

注意:基础版不考虑切换路由,仍保存组件不被销毁

  • 大概思路:

1、vuex中存储tag的数据,包括设置一个首页基础数据,格式大体如下;

 tabsList:[{
   path:'/hove/person',
   name:'Person',
   label:"人类",
 }]

2、点击左侧菜单栏事件,获取菜单对应的路由信息,添加到vuex中;当点击左侧菜单栏生成相应的tag时,加一个判断,已存在的tag的不再添加

3、点击tag,跳转到对应的路由

4、点击tag的删除,判断是不是当前页面对应的tag;如果是对应的,再判断是不是最后一个tag;如果是最后一个tag被删,那往前一个tag跳转相应的路由;如果不是最后一个tag,则往其后一个tag跳转相应的路由

5、选中激活状态:监听路由,判断tag的数据中的name和当前路由的name是否相同,相同的选中激活状态

3. 大体结构

在home.vue主组件中,引入TagsView.vue组件
在这里插入图片描述

  • home.vue
// 给 el-menu 的 el-menu-item加上一个点击事件,传入对应的路由参数
// 方法:
click(val){
	//val 是路由信息
	//判断this.tabsList(从vuex中获取的tag的所有数据)是否存在改路由对应的数据
     let res= this.tabsList.some((item)=>{
       if(item.name==val.name){
           return true
       }
     })
     //如果存在,res==》true,直接return
     if(res){
         return
     }else{
     // 如果不存在,调用vuex的方法,传递当前路由对应的tag所需的信息
         this.$store.commit('addTags',{
             name:val.name,
             path:val.meta.fullPath,
             label:val.meta.title
         })
     }
 }
  • tagsview.vue
//html
<div class="tabsviews">
     <el-tag
     v-for="(tag,index) in tabsList"
     :key="tag.label"
     //tag是否能被删除
     :closable="tag.name !== 'Person'"
     //tag样式类型
     :type="tag.name==routeName?'warning':''"
     //删除事件
     @close="handleClose(tag.name,index)"
     //点击跳转事件
     @click="changeTabs(tag)"
     >
         {{tag.label}}
     </el-tag>
 </div>

// js部分
import { mapState} from 'vuex' //用来获取vuex的tag的数据

export default {
	data(){
		return{
			routeName:'Person',//用来判断当前tag激活状态,默认首页的[person]
		}
	},
	watch:{
			//监视路由,一开始就监视,获取routeName,来判断是否激活
            $route:{
                immediate:true,
                handler(val){
                    this.routeName=val.name
                }
            }
      },
	computed:{
            ...mapState(['tabsList']), //获取vuex的tag的数据
        },
     methods:{
     	//删除
     	handleClose(name,i) {
                //找到对应的tab,删除
                this.tabsList.forEach((item,index) => {
                    if(item.name==name){
                        this.tabsList.splice(index,1)
                    }
                });
 				//判断当前页面是不是被删除的tag相对应
                if(this.$route.name!==name){
                    return 
                }else{
                	//相对应再判断是不是最后一个tag
                    if(i==this.tabsList.length-1){
                         //如果是最后一个,往前一个跳
                        this.$router.push(this.tabsList[i-1].path)
                    }else{
                        this.$router.push(this.tabsList[i].path)
                    }
                }
            },
			
			//点击tag,切换路由
            changeTabs(tag){
            	//如果当前路由与tag是对应的,不需要跳了
                if(this.$route.path==tag.path){
                    return
                }else{
                    this.$router.push(tag.path)
                }
            }
     }
}
  • vuex
state: {
    tabsList:[{
      path:'/hove/person',
      name:'Person',
      label:"人类",
    }]
  },
mutations: {
    //添加tags
    addTags(state,val){
      state.tabsList.push(val)
    }
  },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue+element后台管理系统+TagsView基础版 的相关文章

  • shell 多行注释

    在写 shell 脚本的时候 经常需要注释多行命令 但在每一行前输入 很不方便 1 DOCUMENT 可以采用 HERE DOCUMENT 特性 实现多行注释 这是比较稳妥的作法 比如 bin bash lt lt COMMENT your
  • 火焰检测的相关步骤及算法综述

    引言 随着人类社会的发展进步 火灾成为了不可忽视的多发性问题 火灾一次次展示了其对于人员伤亡和财产的巨大破坏性 火灾的预防和检测一直是人类与火灾斗争过程中关注的焦点 1 近些年来 随着数字通信技术 计算机技术的发展 数字图像处理技术获得了广
  • Yolo系列目标检测 V1-V8

    当two stage proposal detection 系列的算法在目标检测界大展身手的时候 不禁会有人问道 Why we have to train proposal first 于是 便有学者展开了关于one stage算法的研究
  • 修改jupyter notebook的默认路径

    前言 由于不想占用C盘空间 所以想修改jupyter notebook的默认路径 第一次打开anaconda中自带的jupyter notebook 默认路径都是C Users Admin 自己的用户名 新建想默认打开的文件夹 在你想以后默
  • N沟道和P沟道MOS FET开关电路

    在电路中常见到使用MOS FET场效应管作为开关管使用 下面举例进行说明 如图1所示 使用了P沟道的内置二极管的电路 此处二极管的主要作用是续流作用 电路是Li电池充放电电路 当外部电源断开时采用Li电池进行内部供电 即 5V电源断开后Q1
  • python做量化交易干货分享

    python做量化交易干货分享 http www newsmth net nForum article Python 128763 最近程序化交易很热 量化也是我很感兴趣的一块 国内量化交易的平台有几家 我个人比较喜欢用的是JoinQuan
  • Java、解一元二次方程

    可以使用下面的公式求一元二次方程 ax 2 bx c 0 的两个根 r1 b b 2 4ac 2a r2 b b 2 4ac 2a b 2 4ac 称作一元二次方程的判别式 如果它是正值 那么一元二次方程就有两个实数根 如果它为 0 方程式
  • eclipse代码格式化的注释缩进问题

    未修改前ctrl shift f格式化代码 注释缩进不能和代码保持一致 拿到要被转换的字符串 Scanner scanner new Scanner System in String str scanner nextLine 通过内存流实现
  • vue3 props传入的组件无法正常刷新

    问题描述 vue3 写入的数据无法正常渲染 但是从子组件获取正常 使用props导入 解决方案 在setup导出的时候 直接导入props 而不是导入props 变量 错误用法 props var1 let var1 张三 setup re
  • phpstudy安装教程

    1 下载phpstudy 2 安装文件 3 把pikachu文件解压到phpstudy phptutorial WWW 文件名字改成pikachu 4 启动 MySQL管理器 输入账号密码 确定 5 打开浏览器 输入127 0 0 1 pi
  • 微信开放平台_第三方平台授权流程_接口调用令牌

    六 接口调用令牌 6 1 官网说明 在公众号 小程序接口调用令牌 authorizer access token 失效时 可以使用刷新令牌 authorizer refresh token 获取新的接口调用令牌 注意 authorizer
  • Qt开发环境下载和安装

    文档下载地址 https download csdn net download blackbattery 10439812 Qt是跨平台的图形开发库 目前由Digia全资子公司 Qt Company 独立运营 官方网址 http www q
  • 关于C/C++标识符、常量、变量的理解

    1 标识符是由字母和数字构成的序列 第一个字符必须是英文字母 下划线 也被看成是字母 大写字母和小写字母是不同的 标识符可以为任意长度 对于内部标识符来说 至少前31 个字母是有效的 在某些实现中 有效的字符数可能更多 2 在程序执行过程中
  • 数组组成的最小数字

    题目 最小数字 给定一个整型数组 请从该数组中选择3个元素组成最小数字并输出 如果数组长度小于3 则选择数组中所有元素来组成最小数字 输入描述 一行用半角逗号分割的字符串记录的整型数组 0 lt 数组长度 lt 100 0 lt 整数的取值
  • 【TypeScript】项目中对于TypeScript的打包处理

    webpack 通常情况下 实际开发中我们都需要使用构建工具对代码进行打包 TS同样也可以结合构建工具一起使用 下边以webpack为例介绍一下如何结合构建工具使用TS 步骤 初始化项目 进入项目根目录 执行命令 npm init y 主要
  • java 矩阵[多维数组]源代码

    1 import java util Random 2 3 矩阵类 4 public class Matrix 5 6 private int matrix 7 8 Random random new Random 9 10 构造方法 11
  • YiOVE书源:不只是书源,还有对书源的一些预处理,比如提前查看书源数量,以及包含哪些小说站

    引言 我是一个小说爱好者 阅读APP更是其中的效果斐然的不错宝器 平时自己也会收集一些书源 但是在这过程中产生了一些需求 比如 书源的数目是多少 书源链接还有效吗 于是 自己基于Flask写了一个程序 可以解决以上需求 并且可以在网页端显示
  • JqGrid完整例子

    之前写过一篇过于ajax异步加载jqgrid的文章 那个只是一个特殊的情况 如果创建不同数据库表的jqgrid 必须分别写servlet dao层和连接池 很麻烦 今天我写了一个万能的写法 客官只要在前台js中写入表格名称和字段名称即可实现
  • java 中秒杀逻辑

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 考虑要点 二 预减库存 三 秒杀超卖 四 排它锁是什么 前言 什么是秒杀 是一种高并发的技术 许多电商网站都是采用这样的技术应对突发流量的问题 一 考虑要

随机推荐

  • tensorflow提示缺少cudnn64_7.dll

    解决思路 下载一个 https developer nvidia com rdp cudnn download 下载后的压缩包有三个文件 把三个文件添加到对应的地方即可
  • Linux ping www.baidu.com时报错 Name or service not known原因

    一般是你配置的ens33的IPADDR跟虚拟机网络编辑器里的网段不一样 编辑 虚拟网络编辑器 NAT模式 NET设置 这里可以更改net设置里的参数 vi etc sysconfig network scripts ifcfg ens33
  • 红外寻迹原理以及STM32 GPIO的输入检测

    红外寻迹原理以及GPIO的输入检测 一 红外寻迹原理 采用YL 70 红外寻迹壁障模块 红外发射管 透明 发出红外光 如果红外光照在浅色平面 则红外光被反射 并且被红外接收管 黑色 接收 同时对应的输出接口输出低电平 0 红外主板上对应的L
  • 数据压缩实验五:JPEG文件解码实验分析

    一 实验原理 1 JPEG编码原理 JPEG 是Joint Photographic Experts Group 联合图像专家小组 的缩写 是第一个国际图像压缩标准 jpeg jpg是最常用的图像文件格式 是一种有损压缩格式 JPEG 编码
  • linux命令行常用的移动操作

    linux命令行常用的移动操作 1 光标快速切换到行尾行首 Ctrl a 行首 Ctrl e 行尾 2 删除至行尾 Ctrl k 3 删除命令行的命令 Del 删除属光标所在处的字符 Ctrl d 删除光标所在处的字符 BACKSPACE或
  • PAT乙级 1010 一元多项式求导 (25分)

    1010 一元多项式求导 25分 设计函数求一元多项式的导数 注 x n n为整数 的一阶导数为nxn 1 输入格式 以指数递降方式输入多项式非零项系数和指数 绝对值均为不超过 1000 的整数 数字间以空格分隔 输出格式 以与输入相同的格
  • 如何搭建一台属于自己的服务器

    对于新手小白来说 我推荐使用大厂们的服务器 比如阿里云 腾讯云等 这种不仅有强大的大厂背景支持 且不用担心维护 界面功能友好完善 非常适合新手小白 我使用的是腾讯云 所以接下来以腾讯云为例讲解 服务器类型的选择 个人用户的话推荐大家使用 轻
  • 图文详解MOS管的米勒效应

    如下是一个NMOS的开关电路 触发信号VG1设置DC电平2V 方波 振幅2V 频率50Hz T2的开启电压2V 所以MOS管T2会以周期T 20ms进行开启和截止状态的切换 首先仿真Vgs和Vds的波形 会看到Vgs 2V的时候有一个小平台
  • Java自动化测试语言高级之Iterator

    Java自动化测试语言高级之Iterator 文章目录 Java自动化测试语言高级之Iterator Java Iterator 迭代器 Java Iterator 迭代器 Java Iterator 迭代器 不是一个集合 它是一种用于访问
  • shell 字符串数组的使用

    ex 简单例子 str h ee h i h ed0llo for s in str do echo s done PS 最开始折腾好久 是因为我写了一个str6 5 这样的变量 导致 一直报错 还以为是 数组声明方式有问题 我想调用另一个
  • 正点原子IMX6ULL开发板通过网络修改系统时间

    设置时区 开发板系统为正点原子出厂系统 通过网络获取时间 需要设置开发板时区 首先使用date指令查看系统当前时区 此时系统的时区为UTC 世界协调时 这个时候直接通过网络获取时间 得到的时间是UTC时区下的时间 需要先将系统的时区设置为中
  • matlab如何实现不同的值显示不同的颜色

    举例一 一 视图 二 代码 作者 CoderMan 链接 https www zhihu com question 503639152 answer 2257427351 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载
  • 二进制算法_本地二进制模式算法:其背后的数学❗️

    二进制算法 介绍 Introduction The main idea behind LBP is to describe the neighborhood of image elements using binary codes This
  • C++全局变量的初始化过程

    全局变量在main 前完成初始化 调用构造函数 在调用构造函数前 全局变量已分配空间 内存全0 多个全局变量的初始化 按照代码编译的顺序 注意 全局变量被访问前可能它还没有调用构造函数初始化 如果一个项目中 多个dll都用到一个全局变量在共
  • 开发过程中数据库使用反引号

    开发遇到的反引号 不使用会报错 反引号是为了区分MySQL的保留字与普通字符而引入的符号 index insert into sys menu menu name pid index url values 章节测测 2 kk
  • ajax无刷新登陆原理,基于Ajax技术实现无刷新用户登录功能

    感兴趣的小伙伴 下面一起跟随编程之家 jb51 cc的小编两巴掌来看看吧 代码如下 JScript 文件 function userslogon var userName document getElementById txtuserNam
  • 若依代码生成自带导入功能

    文章目录 1 修改ruoyi generator下resources下vm java controller 2 修改ruoyi generator下resources下vm java service 3 修改ruoyi generator下
  • x 的平方根

    给你一个非负整数 x 计算并返回 x 的 算术平方根 由于返回类型是整数 结果只保留 整数部分 小数部分将被 舍去 注意 不允许使用任何内置指数函数和算符 例如 pow x 0 5 或者 x 0 5 示例 1 输入 x 4 输出 2 示例
  • 【vue】渲染大量数据时性能优化

    对应vue渲染大量数据时可以考虑下面几点 1 异步渲染组件 因为组件渲染太多 影响页面的渲染时间 所有可以延迟组件渲染 可以考虑v if处理 2 可以使用虚拟滚动的组件 参考使用这个插件 vue virtual scroller 地址 ht
  • vue+element后台管理系统+TagsView基础版

    TagsView基础版 1 使用框架 插件 vue2 element vuex 2 大概思路 大概需求 1 从效果图看 人类 这个首页的tag一开始就存在 且不能被删除 2 当点击左侧栏的时候 如果没有与该菜单相应的tag则新增 如果存在