列表页面,点击进入到详情页面,在详情页面向下滑动时,滚动条变化,document.documentElement.scrollTop变化,点击返回按钮时,列表页面的document.documentElement.scrollTop自动定位到了详情页面的位置。不止H5,PC端开发中也遇到过此类问题。

页面跳转后,回到此页面时,页面不刷新

概述问题:

页面跳转后,回到此页面时,页面不刷新

H5在详细页点返回,返回时列表页停留在原来的位置(多用于列表页与详情编辑页之间的跳转)

实现原理:

keep-alive与vue-router配合使用

问题一:

暂且分为1、2、3个页面。

从1进入到2,在从2进入到3,此时缓存,2不刷新;

从2返回到1时,不做缓存;

从1再次点击进入到2,在从2进入到3,此时从3返回时,带上了上次的缓存记录。

这个记录怎么清除啊?

beforeRouteEnter(to, from, next) {

if(from.path === "/memberDetails"){//详情页面返回时

document.documentElement.scrollTop = to.meta.scollTopPosition;

next()

}else{

next()

}

},

beforeRouteLeave(to, from, next) { //在离开时修改keepAlive值

if(to.path==='/memberDetails'){//当我们进入到C时开启B的缓存

from.meta.keepAlive = true

from.meta.scollTopPosition = document.documentElement.scrollTop;

next();

}else{

from.meta.keepAlive = false;

from.meta.scollTopPosition = 0

this.$destroy()

next(); //当我们前进的不是C时我们让B页面刷新

}

}

复制代码

详细做法:keep-alive与vue-router配合使用

需求:

列表页打开后,从其他页面进来时不刷新数据;

详情页返回至列表页时,数据不刷新,同时浏览位置不改变;

编辑页返回列表页时,表格该行数据刷新,浏览位置不改变;

实现思路:

使用keep-alive来缓存页面;

使用路由跳转时:beforeRouteEnter和beforeRouteLeave 来保存滚动的位置;

当详情页可以编辑时,记录表格行的index以及ID,保存返回到列表页时查询数据 刷新表格行数据;

在整个页面框架中需要进行是否缓存的设置

复制代码

在路由配置中设置页面是否缓存以及滚动条的位置(这里的滚动条不一定是body的,也有可能是表格内部的或者是某个容器的)

{

path: 'index/query',

component: resolve =>

require([

'@/components/data_center/xxx/index.vue',

], resolve),

meta: {

keepAlive: true,

scollTopPosition: 0

}

}

复制代码

@keepAlive:是否缓存

@scollTopPosition:滚动条位置

在页面入口文件.vue中,配置beforeRouteEnter和beforeRouteLeave(在离开该页时记录scollTopPosition,当从详情页返回时,再把记录的位置赋给对应容器的滚动条)

beforeRouteEnter(to, from, next) {

next(vm => {

if (from.path === "xxx") {

document.getElementById('home_scheme_query').scrollTop = to.meta.scollTopPosition;

}

});

},

beforeRouteLeave(to, from, next) {

if(from.meta.keepAlive) {

  from.meta.scollTopPosition = document.getElementById('home_scheme_query').scrollTop;

}

next();

}

复制代码// list.vue

created() {

this.getList()

},

beforeRouteEnter(to, from, next) {

if (to.name === 'productList' && from.name === 'ProductSkuM') {

to.meta.keepAlive = true // 让列表页缓存,即不刷新

next()

} else {

to.meta.keepAlive = false // 让列表页即不缓存刷新

next()

}

},

activated() {

console.log('缓存') // 方便我测试看的

},

复制代码

以上就是列表页跳转到详情页,页面数据缓存的一种解决方案。

从列表页中的表格内部跳转到详情页,当详情页存在编辑的能力时

跳转到详情页时记录数据在表格的哪一行($index)以及id(数据相对简单 可记录在query中);

详情页保存时,返回到列表页触发方法,根据id得到该行数据,然后刷新该行数据即可[vm.$set(vm.array,index,newValue)或者vm.array.splice(index,1,newValue)];

vue的activated和deactivated生命周期

包裹的动态组件会被缓存,它是一个抽象组件,它自身不会渲染一个dom元素,也不会出现在父组件链中。当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

如包裹两个组件:组件A和组件B。当第一次切换到组件A时,组件A的created和activated生命周期函数都会被执行,这时通过点击事件改变组件A的文字的颜色,在切换到组件B,这时组件A的deactivated的生命周期函数会被触发;在切换回组件A,组件A的activated生命周期函数会被触发,但是它的created生命周期函数不会被触发了,而且A组件的文字颜色也是我们之前设置过的。

参考链接:

vue从其它页面返回_vue---详细页点返回列表页,停留在原先位置相关推荐

  1. vue页面详情页返回列表页_vue 详情页返回列表页,保留列表页之前的筛选条件...

    需求背景 再列表页进行一系列的筛选条件之后,点击某一个进入详情页,当从详情页返回列表页的时候,需要保留之前的筛选条件. 之前的实现方法 路由跳转的时候,把筛选条件json对象放到query中去,传到详 ...

  2. 【一句话调用】h5页面 返回缓存 如js加载列表页点击进入详情页,返回后刷新的问题和无法定位问题 html 返回定位

    在做html5开发时,经常会碰到从列表页跳转到详情页,然后在点击返回或者手机手势返回后,列表内容刷新且无法定位到点击的位置,尤其包含列表加列表的情况 问题尤其明显. 解决办法如下: 1.vue的组件切 ...

  3. vue.js实现的,添加和删除代办事项列表页面源码

    大家好,今天给大家介绍一款,vue实现的,添加和删除代办事项列表页面源码(图1).送给大家哦,获取方式在本文末尾. 图1 可以添加代办事项.删除代办事项.将未完成任务移动到列表前面(图2) 图2 代码 ...

  4. 新闻列表页flex_C端列表页如何设计?

    编辑导读:在C端产品设计中,数据列表页是非常常见的页面,它一般用来展示多条信息条目.虽然看起来十分简单,但也是不可或缺非常重要的页面.本文作者从产品使用场景出发,对列表页设计的设计重点和步骤展开了梳理 ...

  5. php 抓取京东搜索页,京东商品列表页爬虫采集方法 - 八爪鱼采集器

    采集场景 在京东搜索页 https://search.jd.com/Search 输入关键词搜索,采集搜索后得到的多个商品列表数据. 鼠标放到图片上,右键,选择[在新标签页中打开图片]可查看高清大图 ...

  6. 帝国列表页 pHP原代码页,帝国模板列表页和内容页的伪静态规则实现方法

    在栏目设置----生成选项里面 列表模式 和 内容页模式 依然选择静态 然后在其他一些选择是否生成列表页内容页的选项里面都选择不生成就可以了 以下的是列表页的===================== ...

  7. vue开发手机页面闪烁_Vue页面加载闪烁问题的解决方法_婳祎_前端开发者

    v-if 和 v-show 的区别 v-if只会在满足条件时才会编译,而v-show不管是否满足条件始终会编译,v-show的显示与隐藏只是简单的切换 也就是说,在使用v-if时,若值为false,那 ...

  8. list vue 删除后页面渲染_Vue项目中v-for数组删除第n项元素产生渲染错误问题及解决方法...

    项目背景 最近使用Vue(版本2.9)开发一个项目时,要生成表单列表,所以使用了v-for来做循环,循环里的元素(item)是一个子组件.同时每个元素都有删除按钮,点击后删除当前元素. 初始代码如下: ...

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

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

最新文章

  1. 使用Git分布式版本控制系统
  2. 程序员提交代码的 emoji 指南——原来表情文字不能乱用
  3. Java学习笔记25
  4. 【JavaScript基础笔记】模块化、立即执行函数应用、闭包应用
  5. python 文本聚类算法
  6. oracle decode函数
  7. 【WebRTC---入门篇】(二十)WebRTC核心之SDP详解
  8. leetcode 697. 数组的度(hashmap)
  9. python pass关键字神奇吗
  10. script标签的for属性和event属性
  11. 解决华硕笔记本自带触摸板的二指及三指失效的问题
  12. 计算机网络——TCP
  13. 使用Windows系统的几个好的习惯
  14. 发现同义词 python_用词代替同义词
  15. 极路由4增强版 倒闭后无法开启开发者模式
  16. 关于一次pkgs --update错误记录(cmd_package_update 451)
  17. [战略]对空间_日志风格_日志分类_日志标记_的整体说明
  18. 万豪酒店集团5亿客户记录泄露
  19. JavaSE详细总结——万字纯手码
  20. pickerView的一些用法

热门文章

  1. android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
  2. 微信小程序云开发用户身份登录_云开发版的微信商城小程序第一章
  3. html5新年网页做给父母的,春节回家,要陪父母做这十件小事
  4. Jenkins中的邮件设置
  5. Linux 执行文件 path,linux可执行文件添加到PATH环境变量的方法
  6. win10只有c盘怎么分区_磁盘分区:系统C盘空间不足怎么办?
  7. c语言字符变量grade如何定义,c语言基础概念笔记
  8. mysql 视图 教程_MySQL VIEW(视图)
  9. 现代化医学信息管理c语言,山西医科大学_院校信息库_阳光高考
  10. linux实验磁盘管理,从0到1学习网络安全 【Linux实验篇-LVM 磁盘管理】