对于home主页的切换处理
经过测试,发现,在home首页的时候,滑动到某一个位置的时候,如果再点击tabbar中的“购物车”、“分类”或者“我的”的时候,再点击到首页的时候,回不到原本滑动到的那个位置。

那么,首先为了让首页不要随意被销毁掉,那么使用了Keep-alive,这边再来回顾下keep-alive。
<keep-alive>包裹动态组件的时候,会缓存不活动的组件实例,而不是销毁它们。可以看作一个抽象的组件,自身不会渲染一个DOM元素,也不会出现在父组件的链中。简而言之,<keep-alive>包裹的组件会被缓存。之后,我为了实现这个效果,在home中加了activated与deactivated函数。先说下这个生命周期钩子,官网说其是在服务器端渲染期间不被调用,说白了其就是在挂载后和更新前被调用的。但如果该组件中没有使用缓存,也就是没有被<keep-alive>包裹的话,activated是不起作用的。而deactivated的触发时机是keep-alive组件停用时调用。当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
activated:在vue对象存活的情况下,进入当前存在activated()函数的页面时,一切换页面就会被触发。有的时候,我们的页面在每次切换时需要重新请求数据。比如说,当第一次切换到组件A时,组件A的created、mounted、activated生命周期函数都会被执行,但是页面切换是不会触发created、mounted的,这时候就需要activated。在切换到组件B时,这时候组件A的deactivated的生命周期函数即被触发,在切换组件A,组件A的activated生命周期函数会被触发。
我们来把它带入实际的开发中,在实现切换首页后,又回到原本滑动位置的话。我们可以在home中,先设置离开时,保存一个位置信息。进来时,将位置设置为原来保存的位置信息即可。
首先,我们现在app.vue中,将<keep-alive>包裹住<router-view>:
<template>
<div id="app">
<keep-alive><router-view/>
</keep-alive>
<finaltabbar></finaltabbar>
</div>
</template>
之后在home.vue中使用activated与deactivated:
activated() {
this.$refs.scroll.scrollTo(0,this.saveY,0)
},
deactivated() {
// console.log("ddd");
this.saveY = this.$refs.scroll.getscrollY()
// console.log(this.saveY);
}
接着继续在scroll.vue中把封装实现完毕:
getScrollY() {
return this.scroll ? this.scroll.y : 0
}
这样即实现了。
对于home主页的切换处理的更多相关文章
- 【基础】iframe之间的切换(四)
案例: 打开http://mail.126.com/,定位登录输入框时,却总是定位不到元素,后来发现,登录的内容在一个iframe中. 一.由主页面切换至iframe dr.switchTo().fr ...
- Python图形界面开发—wxPython库的布局管理及页面切换
前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现.GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验.虽然 ...
- 图解JSP与Servlet的关系
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...
- Android万能的指示器
说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...
- java-jsp与servlet
Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服 ...
- Hexo博客系列(一)-Windows系统配置Hexo v3.x个人博客环境
[原文链接]:https://www.tecchen.xyz/blog-hexo-env-01.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力 ...
- [译文]casperjs 的API-casper模块
Casper class: 可以通过这个模块的create()方法来获取这个模块的一个实例,这是最容易的: var casper = require('casper').create(); 我们也可以 ...
- selenium 多窗口(windows)及ITargetLocator使用总结
1. selenium能实现窗口切换的原理 2. 常见命令 2.1 WindowHandle 2.2 WindowHandles 2.3 SwitchTo 3. 使用JavaScript新建窗口 4. ...
- 图解 servlet 与jsp的关系
Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet,实际 ...
随机推荐
- 自动化运维工具之Puppet模块
前文我们了解来puppet的变量.流程控制.正则表达式.类和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14079208.html:今天我们来 ...
- 转:【Python3网络爬虫开发实战】3.1.2-处理异常
[摘要] 前一节我们了解了请求的发送过程,但是在网络不好的情况下,如果出现了异常,该怎么办呢?这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的. urllib的erro ...
- PyQt(Python+Qt)学习随笔:QListView的viewMode属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的viewMode属性用于控制QListView的视图模式,该属性类型为枚举类型Q ...
- Day4 Scrum 冲刺博客
线上会议: 昨天已完成的工作与今天计划完成的工作及工作中遇到的困难: 成员姓名 昨天完成工作 今天计划完成的工作 工作中遇到的困难 纪昂学 创建一个Tetromino类来作为7个经典形状的父类 绘制下 ...
- element ui只输入数字校验
注意:圈起来的两个地方,刚开始忘记写type='number'了,导致可以输入'123abc'这样的,之后加上了就OK了
- 题解 CF1375E Inversion SwapSort
蒟蒻语 这题是真的奇妙... 想了好久才想明白. 蒟蒻解 考虑冒泡排序是怎样的. 对于相邻的两个数 \(a_i, a_{i+1}\),如果 \(a_i>a_{i+1}\) 那么就交换两个数. 总 ...
- 【python接口自动化】- 使用json及jsonpath转换和提取数据
前言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它可以让人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成,适用于进行数据交互的场景,比如 ...
- celery定时执行任务 的使用
1 参照博客 https://www.cnblogs.com/xiaonq/p/9303941.html#i1 1 创建celery_pro包 # 可在任意文件下 2 在 celery_pro 下 ...
- oracle 11.2.0.4下载
Oracle 11.2.0.4下载地址 Linux x86: https://updates.oracle.com/Orion/Services/download/p13390677_112040_L ...
- Jmeter之分布式执行测试 (2)
一. 安装Java 1.1下载JDK 1) Windows安装jdk,下载完成后,双击安装 2) Linux解压:tar -zxvf jdk-8u74-linux-x64.gz 1.2 Java环境变 ...