vue-element-admin iframes 组件 保留 iframe 操作状态
由于没有时间去维护这个功能,这个仓库我暂停了,当前博客内容和代码只作为实现思路参考
代码贴前面,gitee地址:https://gitee.com/chkhk/vue-element-admin 可以自行拉到本地运行看看效果
预览效果,可以拉到文章最底下看 GIF
起因
最近做的后台管理系统,用的是 vue-element-admin 的框架。
然后又有嵌入其它系统页面的需求,一开始是直接放在页面上的 iframe,但是发现切换页面再切换回去后,iframe 也跟着一起刷新了:
比如你嵌入了百度,你在百度搜了个东西,然后到其他页面去操作了,然后回到百度,就会发现之前的搜索结果不见了,又变回百度首页了

在网上翻了几圈也没有发现一个好一点的解决方案,于是准备自己写一个。
效果
要求直接在框架里嵌入其他系统的页面,在切换页面的时候能保留 iframe 之前的操作状态
分析
vue-element-admin 主要的页面区域,用了 vue 的 keep-alive 组件,在通过 TagView 切换时,对应匹配到的页面组件,数据是会被缓存起来的。
所以一般页面直接切换后,之前的操作都还是恢复到切换前的,没有改变。它本身并不是单纯的显示隐藏,而是会去销毁重载 dom 节点的,所以在页面上添加的 iframe ,自然也没办法保留操作。
然后自己一开始想了几个方案,比如修改路由,增加参数,动态的判断该页面是走显示隐藏逻辑还是 keep-alive。会变得很复杂,且对原框架修改比较大,所以想找个简单一点的方法。(其实还是实力不足,哈哈)
方案
后来想到的解决办法是,不改路由这些,原来怎么操作页面,现在还是怎么操作。直接在 AppMain 组件(主显示区)盖上一层,专门显示 iframe 页面。这样只需要简单的配置和操作,就能实现效果。比较方便,而且简单。
大概思路就是,专门一个 iframes 组件,盖在主显示层上,每次打开对应页面时,通过 vuex 共享状态,新增,显示,隐藏,销毁对应的 iframe,因为用的是显示隐藏,所以切换后还能保留切换前的状态。
代码
改动其实不大,添加4个新文件,修改一个文件,如下图:

具体的内容可以查看本次提交:
https://gitee.com/chkhk/vue-element-admin/commit/9f1fcd03f92acf32d542fa322140a4e8feb724bb
使用 demo 可以查看 gitee 项目 https://gitee.com/chkhk/vue-element-admin
对比
iframes 效果:

总结
以上就是记录一下自己的学习过程吧,解决问题后还是挺开心的,实现也是用的最简单的思路了
如果有其它更好的方案,也希望大佬能在评论区交流交流啦
vue-element-admin iframes 组件 保留 iframe 操作状态的更多相关文章
- 转:vue+element实现树形组件
项目中需要用到树形组件,在网上发现一个用vue+element实现的树形组件,现在记录下: demo地址:https://github.com/wilsonIs/vue-treeSelect
- [转]vue Element UI走马灯组件重写
https://blog.csdn.net/u013750989/article/details/82885482 1.element ui走马灯组件 -- carousel分析一波源代码:carou ...
- vue element Admin - 修改浏览器标签名 + 添加tagView标签 +固定导航头部 + 添加侧边栏Logo
1 .修改浏览器标签名称: 修改浏览器标签名称在文件:\src\settings.js image.png 2 .修改固定头部Header和侧边栏 Logo: image.png 1)侧边栏文 ...
- vue+element UI以组件递归方式实现多级导航菜单
介绍 这是一个是基于element-UI的导航菜单组件基础上,进行了二次封装的菜单组件,该组件以组件递归的方式,实现了可根据从后端接收到的json菜单数据,动态渲染多级菜单的功能. 使用方法 由于该组 ...
- vue+element ui table组件封装,使用render渲染
后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...
- vue element admin 关闭eslint校验
vue.config.js里面进行设置 lintOnSave: false, // lintOnSave: process.env.NODE_ENV === 'development',
- vue+element的el-menu组件实现路由跳转及当前项的设置
<el-menu router :default-active="$route.path" class="el-menu-vertical-demo" @ ...
- 封装Vue Element的table表格组件
上周分享了几篇关于React组件封装方面的博文,这周就来分享几篇关于Vue组件封装方面的博文,也好让大家能更好地了解React和Vue在组件封装方面的区别. 在封装Vue组件时,我依旧会交叉使用函数式 ...
- vue+element ui 的上传文件使用组件
前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...
- vue+element ui 的表格列使用组件
前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...
随机推荐
- 你做的 9 件事表明你不是专业的 Python 开发人员
本文转载自国外论坛 medium,原文地址: https://medium.com/navan-tech/7-java-features-you-might-not-have-heard-of-ade ...
- 【SHELL】跨行内容查找、替换、删除
跨行内容查找.替换.删除 sed '/START-TAG/{:a;N;/END-TAG/!ba};/ID: 222/d' data.txt /START-TAG/ { # Match 'START-T ...
- 【Kafka系列】(二)Kafka的基本使用
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Kafka 线上集群部署方案怎么做 ...
- [转帖]【Jmeter】Jmeter压力测试工具安装及使用教程(redis测试)
摘自:https://www.cnblogs.com/monjeo/p/9330464.html 一.Jmeter下载 进入官网:http://jmeter.apache.org/ 1.第一步进入官网 ...
- nr_requests 以及 queue_depth的学习与了解
nr_requests 以及 queue_depth的学习与了解 背景 冯诺依曼的计算机体系结果里面 运算器,存储器是核心. 但是将核心的产生的结果推送出去的其实是IO IO虽然不是像运算器和存储器那 ...
- 【转帖】QUIC协议简史
QUIC简史 QUIC(Quick UDP Internet Connection)是谷歌推出的一套基于UDP的传输协议,它实现了TCP + HTTPS + HTTP/2的功能,目的是保证可靠性的同时 ...
- Linux 安装宋体字体的简单办法
1. 今天同事说测试环境(CentOS) 打印有异常,无法将汉字正常打印出来. 2. 开发同事提供的思路是安装上宋体的字体再进行尝试,并且给出了一个解决方案的地址: https://blog.csdn ...
- uni-app事件冒泡 如何解决事件冒泡 推荐tap事件
冒泡事件## 冒泡事件 <view class="max-box" @tap="waimian"> 外面 <view class=" ...
- 玩一玩 VictoriaLogs
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 下载 see: https://github.com/Vi ...
- 如何在proto3中用上golang对应的interface{}类型
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 首先,我希望所有golang中用于http请求响应的结构, ...