由于没有时间去维护这个功能,这个仓库我暂停了,当前博客内容和代码只作为实现思路参考

代码贴前面,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 操作状态的更多相关文章

  1. 转:vue+element实现树形组件

    项目中需要用到树形组件,在网上发现一个用vue+element实现的树形组件,现在记录下: demo地址:https://github.com/wilsonIs/vue-treeSelect

  2. [转]vue Element UI走马灯组件重写

    https://blog.csdn.net/u013750989/article/details/82885482 1.element ui走马灯组件 -- carousel分析一波源代码:carou ...

  3. vue element Admin - 修改浏览器标签名 + 添加tagView标签 +固定导航头部 + 添加侧边栏Logo

    1 .修改浏览器标签名称: 修改浏览器标签名称在文件:\src\settings.js   image.png 2 .修改固定头部Header和侧边栏 Logo:   image.png 1)侧边栏文 ...

  4. vue+element UI以组件递归方式实现多级导航菜单

    介绍 这是一个是基于element-UI的导航菜单组件基础上,进行了二次封装的菜单组件,该组件以组件递归的方式,实现了可根据从后端接收到的json菜单数据,动态渲染多级菜单的功能. 使用方法 由于该组 ...

  5. vue+element ui table组件封装,使用render渲染

    后台管理经常会用到表格,一开始封装了一个常用的功能性表格,点击这里: 后来由于需求增加,在表格中还会用到switch,select,input等多种组件,每次都要在html中增加<el-tabl ...

  6. vue element admin 关闭eslint校验

    vue.config.js里面进行设置 lintOnSave: false, // lintOnSave: process.env.NODE_ENV === 'development',

  7. vue+element的el-menu组件实现路由跳转及当前项的设置

    <el-menu router :default-active="$route.path" class="el-menu-vertical-demo" @ ...

  8. 封装Vue Element的table表格组件

    上周分享了几篇关于React组件封装方面的博文,这周就来分享几篇关于Vue组件封装方面的博文,也好让大家能更好地了解React和Vue在组件封装方面的区别. 在封装Vue组件时,我依旧会交叉使用函数式 ...

  9. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  10. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

随机推荐

  1. Redis 中bitMap使用及实现访问量

    1. Bitmap 是什么 Bitmap(也称为位数组或者位向量等)是一种实现对位的操作的'数据结构',在数据结构加引号主要因为: Bitmap 本身不是一种数据结构,底层实际上是字符串,可以借助字符 ...

  2. 【MicroPython】生成Q(string)符号表文件 - py\makeqstrdefs.py

    脚本使用格式 python py/makeqstrdefs.py [command] [mode] [input-file] [output-directory] [output-file] comm ...

  3. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.20)

    百度网盘会员账号共享(11.20更新) 账号:zqv29268 密码:7003wayb 账号:rpz75364 密码:riyk1648 账号:0580quqn 密码:148hxhe 账号:132620 ...

  4. [转帖]TPC-C 、TPC-H和TPC-DS区别

    https://zhuanlan.zhihu.com/p/339886289 针对数据库不同的使用场景TPC组织发布了多项测试标准. TPC-C: TPC Benchmark C于1992年7月获得批 ...

  5. [转帖]linux shell 中数组的定义和for循环遍历的方法

    https://www.cnblogs.com/ysk123/p/11510718.html linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用 ...

  6. [转帖]tidb 如何对 TiDB 进行 TPC-C 测试

    https://docs.pingcap.com/zh/tidb/stable/benchmark-tidb-using-tpcc TPC-C 是一个对 OLTP(联机交易处理)系统进行测试的规范,使 ...

  7. [转帖]在yum安装本地rpm文件时遇到public key不正确问题

    yum错误:public.gpg.key: import read failed(2). 在yum安装本地rpm文件时遇到public key不正确问题 Downloading Packages:   ...

  8. [转帖]国产数据库到底行不行?人大金仓KINGBASE数据库与主流开源数据库性能实测

    近年来,人大金仓的数据库产品受到了外界诸多的关注.做产品,免不了要接受用户的对比和选择,数据库因其行业的自身特点,还有很多开源的技术产品同台比拼,用户因此也会产生诸多疑问,国产数据库相比开源数据库到底 ...

  9. [转帖]configure: error: cannot guess build type;you must specify one

    该问题一般出现在国产平台,从错误描述来看,意思是:无法猜测build类型,你必须指定一个. 解决办法: 1. 在系统/usr路径下搜索 config.guess 和 config.sub 这两个文件. ...

  10. [转帖]Native Memory Tracking 详解(3):追踪区域分析(二)

    https://www.modb.pro/db/539804 上篇文章 Native Memory Tracking 详解(2):追踪区域分析(一) 中,分享了NMT追踪区域的部分内存类型--Java ...