vue项目实现详情页后退缓存之前的数据

2019年02月19日 14:54:57 不想写代码的程序员 阅读数:244

一、需要缓存的内容:

1、后退缓存条件查询的数据

2、后退缓存分页信息

二、实现

通过参考网上搜集的资料知道用keepAlive实现

参考地址:https://blog.csdn.net/sinat_17775997/article/details/80950246

1、在路由文件router.js中针对要缓存的页面进行设置

添加keepAlive: true,通过此字段判断是否需要缓存当前组件

添加keepAlive: true,通过此字段判断是否需要缓存当前组件

2、在app.vue文件中添加 :

<keep-alive>
            <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <router-view v-if="!$route.meta.keepAlive"></router-view>

$route.meta.keepAlive表示在1中配置缓存的页面进行缓存

3、在列表页面添加路由监听

(1)当要跳转到此列表页面的时候,设置keepAlive= true,缓存当前的页面数据

(2)在列表页面添加activated钩子函数
        activated() {
            // isUseCache为false时才重新刷新获取数据
            // 因为列表页面使用keep-alive来缓存组件,所以默认是会使用缓存数据的         
            if(!this.$route.meta.isUseCache) {
                // 清空原有数据
                this.allModelsData = []
                this.dataTypeList = []
                // 这是我们获取数据的函数
                this.fetchModels()
                this.getModelDatatype()
                this.$route.meta.isUseCache = false
            }
        },

4、在列表详情页添加:

beforeRouteLeave(to, from, next) {
            console.log("to.path-->", to.path)
            if(to.path == '/masterdatamodel') {
                to.meta.isUseCache = true
            } else {
                to.meta.zai  = false
            }
            next()
        },

//to.path == '/masterdatamodel'判断页面是否跳转到列表页,跳转到列表页则保存缓存数据

5、做完以上发现:

(1)列表页条件查询后,进入详情页,再后退,数据缓存依然在。要求实现

(2)进入详情页,再后退,发现分页不见了,页数只有1页,保存的数据为之前进入详情页的那页数据。

排查原因:发现分页组件dpGrid 使用的v-if="routerAlive",修改为v-show="routerAlive",至此分页缓存实现。

<dpGrid v-if="routerAlive" ref="gridPageComponent" @gridFeedback="onGridFeedback" :is-show="isGridShow" :data-fields="localPageConfig.dataFields" :grid-cols="gridCols" :grid-options="gridOptions" :data-rows="dataRows" :refresh-flag="refreshFlag">
            </dpGrid>

修改为:

<dpGrid v-show="routerAlive" ref="gridPageComponent" @gridFeedback="onGridFeedback" :is-show="isGridShow" :data-fields="localPageConfig.dataFields" :grid-cols="gridCols" :grid-options="gridOptions" :data-rows="dataRows" :refresh-flag="refreshFlag">
            </dpGrid>

(3)v-if和v-show的区别:

v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐。

详情参考:https://www.cnblogs.com/wmhuang/p/5420344.html

当使用v-if时候其他分页信息由于隐藏,后退则被删除了;而使用v-show,数据仍然保留,其他的分页的数据通过display:none被隐藏了。

转载于:https://www.cnblogs.com/mouseleo/p/10955792.html

vue项目实现详情页后退缓存之前的数据相关推荐

  1. VUE项目从详情页退回列表页,保留列表页的筛选条件(筛选条件为单选),以及刷新后恢复默认的一个筛选状态

    vue项目做的一个"花名册"页面,从"花名册"页面可以点击某一个人的名字,进入这个人的信息详情表格页面,而且这个人的信息详情页面中有一个"直属上级&q ...

  2. vue中前进刷新、后退缓存用户浏览数据和浏览位置的实践

    vue中,我们所要实现的一个场景就是: 1.搜索页面==>到搜索结果页时,搜索结果页面要重新获取数据, 2.搜索结果页面==>点击进入详情页==>从详情页返回列表页时,要保存上次已经 ...

  3. 七十四、完成Vue项目城市详细页,并实现打包

    2020/11/09. 周一.今天又是奋斗的一天. @Author:Runsen 今天完成Vue项目城市详细页,并通过npm run build实现打包. Banner.vue <templat ...

  4. vue实战-产品详情页(轮播图、放大镜)

    vue实战-产品详情页(轮播图.放大镜) 1.添加产品详情页的静态组件 因为它是路由组件,将其放入pages文件夹下. 注册路由组件 1)router中添加Detail的路由. {path:'/det ...

  5. 七十三、Vue项目城市详细页的动态路由,Banner布局和公用图片画廊组件拆分

    2020/11/04. 周四.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  6. 七十一、Vue项目城市选择页搜索逻辑实现,边输入边搜索功能的解决办法:节流函数

    2020/10/30. 周五.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  7. 六十九、完成Vue项目城市选择页,路由配置,搜索框布局、列表布局、BetterScroll 的使用和字母表布局

    2020/10/28. 周三.今天又是奋斗的一天. @Author:Runsen 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  8. 微信小程序电商项目商品详情页开发实战之数据绑定与事件应用

    各位CSDN的朋友,我们都知道,现在微信小程序电商平台特别火爆,所以我将以一个生鲜电商项目为例,为大家讲述微信小程序的实战化开发,价值几万元的成熟项目,你可千万不要错过哦. 大家直接通过视频链接直接看 ...

  9. vue通用商品详情页

    vue通用商品详情页 <template><div class="goodsinfo-container"><transition@before-en ...

最新文章

  1. C# FTP下载文件
  2. Django3 --- async
  3. 面试中有这些特征的公司可以pass了
  4. Verilog状态机的编写学习
  5. @async 没有异步_javascript之异步函数
  6. html2canvas图片坐标,html2canvas生成的图片偏移不完整的解决方法
  7. BZOJ2276: [Poi2011]Temperature
  8. 使用TortoiseSVN碰到的几个问题(2)-冲突解决, 图标重载
  9. 反爬虫策略之----UserAgent设置与随机生成
  10. 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
  11. 我用新拟物化设计风格,做了一个App改版案例
  12. C语言谭浩强第三版第九章例题及课后题:预处理命令
  13. 为什么计算机无法读取u盘,电脑无法识别读取U盘怎么办?逐一排查解决问题
  14. Jquery生成条形码到网页以及打印条形码
  15. 墨染の軍師(シオン) / 墨染(异时层火刀)
  16. web开发权威,一个合格的初级前端工程师需要掌握的模块笔记
  17. JAVA计算机毕业设计抑郁症患者博客交流平台Mybatis+源码+数据库+lw文档+系统+调试部署
  18. 计算机适应性考试题目,计算机控制考试题目整理
  19. 递归函数最终会结束,那么这个函数一定?
  20. 增长黑客AB-Testing系统设计

热门文章

  1. UVa1586 - Molar mass
  2. 黑马程序员php考试题,PHP基础案例教程
  3. c# mysql 汉字乱码_c#+mysql 中文乱码
  4. append在python中是什么意思_append在python里是什么意思
  5. JavaScript的Math对象使用(1)
  6. Python入门--else语句
  7. c语言指数怎么表示_Assembly 浮点表示法
  8. bootstrap 输入错误提示_网上体育用品商城(ssm,mysql,bootstrap,html,css)
  9. bzoj 4631: 踩气球(线段树)
  10. tshark/wireshark抓包小结