一般下拉之后,拿到数据合并,会默认展示顶部第一条,模仿其他聊天应用,回到下拉之前位置,如果不做处理,可以看见下拉得到的数据,本方法完美解决

有问题可以留言或者加qq445849201讨论,亲测ios和android都没问题

没有更多消息了

{{item.id}}

{{item.id}}{{item.content}}

export default {

data() {

return {

title: 'Hello',

msgList:[],

listPage:0,

showIndex:-1,

isOver:false

}

},

onLoad() {

let _this = this;

_this.addList();  //产生十条消息

},

methods: {

addList(){

let _this = this;

let type = null;

for(let i = 0; i <10;i++){

if(i % 3 == 1){            //消息列表为图片,增加图片消息,增加页面视觉辨识,如果不做处理,在滚动到下拉之前位置时,尤其在低端机上,是可以看见页面图片闪一下

type = 'img'           //文字消息不是很闪

}else{

type = 'msg'           //消息列表为文字消息 ,view循环渲染中判断

}

let msgObj={               //一条消息对象

id:_this.listPage * 10 +i,

content:'你有一条新的消息,请注意查收',

type:type

}

_this.msgList.unshift(msgObj);  //插入列表

}

if(_this.listPage == 0){            //首次滚动到底部

_this.$nextTick(function() {

uni.pageScrollTo({

scrollTop: 99999,

duration: 0

});

});

return;

}

if(_this.listPage>3){               //模拟消息取完了,拿出来40条消息

_this.isOver = true;             // 标记已无更多消息

_this.endOver();                 // 设置禁用下拉加载

return;

}

//最关键一步,在数据插入列表,渲染之后,没有滚动到下拉之前位置时,采用相对定位,设置同背景色遮罩层盖住消息

//设置为9意思是,每次拿十条数据,遮住前十条,用数组循环下标判断从0开始,初始化为-1

_this.showIndex = 9;

let scrollMsg = _this.msgList[9];  //数据合并之后,获取10条消息的元素

_this.$nextTick(function() {

let view = uni.createSelectorQuery().select('#msg'+scrollMsg.id);

view.boundingClientRect(res => {

console.log('#msg'+scrollMsg.id+'距离顶部'+res.top); //获取10条消息的元素距顶部的距离,这就是需要滚动的距离

uni.pageScrollTo({         //回到下拉之前,多展示一条消息

scrollTop: res.top,

duration: 0

});

_this.showIndex = -1;      //去掉遮罩层

uni.stopPullDownRefresh(); //结束下拉加载

}).exec();

});

},

endOver(){  //设置禁用下拉加载

const pages = getCurrentPages();

const page = pages[pages.length - 1];

const currentWebview = page.$getAppWebview();

currentWebview.setStyle({

pullToRefresh: {

support: false,

style: plus.os.name === 'Android' ? 'circle' : 'default'

}

});

console.log('没有更多数据了,禁用');

},

},

onPullDownRefresh() {  //下拉加载

let _this = this;

console.log('refresh');

_this.listPage ++;

_this.addList();

}

}

.content {

display: flex;

flex-direction: column;

align-items: center;

justify-content: center;

padding: 30rpx;

background-color: #FFFFFF;

}

.logo {

height: 200rpx;

width: 200rpx;

margin: 30rpx 0;

}

.text-area {

display: flex;

justify-content: center;

}

.pull-content{

position: relative;

width: 100%;

display: flex;

align-items: center;

margin: 30rpx 0;

}

.left-msg{

width: 300rpx;

border-radius: 10rpx;

background-color: #9eea6b;

color: #333;

font-size: 30rpx;

padding:20rpx;

}

.msg-right{

justify-content: flex-end;

}

.img-box{

display: flex;

align-items: center;

font-size: 28rpx;

}

.absolute-view{

position: absolute;

top: 0;

left: 0;

z-index: 10;

width: 100%;

height: 100%;

background-color: #FFFFFF;

}

.show-index{

display: none;

}

.msg-over{

font-size: 24rpx;

text-align: center;

color: #999999;

}

android点击下拉历史记录,uni-app,社交应用中,聊天页面下拉onPullDownRefresh获取历史消息,数据合并之后,滚动到下拉之前的位置,页面看不见闪动,完美解决...相关推荐

  1. 富士相机设置传原图_富士X-S10相机传图必看!原创完美解决PC互传图片问题

    富士X-S10相机传图必看!原创完美解决PC互传图片问题 2020-11-28 17:03:04 18点赞 28收藏 23评论 创作立场声明:原创首发分享,实用技巧希望推荐好文! 最近入手了富士X-S ...

  2. Android深色模式下,看不见字的解决办法

    你去看看,看不见字的那些是不是都没有设置字体颜色! 设置一下字体颜色就好啦! 对于AlertDialog,千万不要用它自己的,要我们自己写好view,然后设置view,不然的话,深色模式下,你是很难修 ...

  3. Revit中添加了标高看不见原来轴网解决方法及轴网转化

    一.Revit中添加标高看不见轴网怎么处理? 在Revit中绘制的轴网会默认超过最高标高一定距离,因此若新绘制的标高在这距离之上时怎么办呢?难道要重新绘制轴网么?如图1所示. 这种情况下我们只要进入一 ...

  4. android 杀进程推送服务,关于APP进程被杀死,极光推送收不到消息的解决办法

    推送是每一个APP必不可少的一部分,这几天正好在做这一块,所以总结一下遇到的一些问题.在APP被杀死的情况下,对应的推送service也一起被杀死了,这个时候我们怎么能够收到后台的推送呢? 解决办法很 ...

  5. Android 点击短信链接打开App

    一.背景 随着APP产品的迭代,运营的过程中往往会有一些活动希望通知到用户,或者唤起沉睡用户,就我们Android而言,当然有推送,长连接一类的方法,但是,基于国内的推送环境,只能APP自己启动长连接 ...

  6. 下发布可执行文件_IOS APP 发布过程中涉及相关概念

    AppID(应用 ID) AppID 是识别不同应用程序的唯一标志符,每个 app 都需要一个 App ID 或者 app 标识.目前有两种类型的 App 标识:一个是精确的 App ID(expli ...

  7. Android进阶之路 - 实现58同城APP加载中页面

    此文引用的是58同城的加载动画,虽然出来有一些年头了,但我表示使用的时候因技术原因我还是遇到了一些或大或小的坑. 转载请注明:http://blog.csdn.net/qq_20451879/arti ...

  8. 编程案例——layui的table表格并获取选中的数据、layui监控select下拉框并将隐藏的div显示

    layui table表格展示 效果 代码 前端代码 后端代码:我们需要注意后端给前端返回数据的格式 获取radio标签所对应的数据条目 问题描述 解决办法 layui监控select下拉框并将隐藏的 ...

  9. 关于IE不能打开 windows updates 页 / 看不见版本号的解决

    从论坛上找到一篇这方面的技术贴,出处已失,抱歉.原文如下: 1.很多情况下都是因为安装了广捷居制作的ACDSEE32 5.0迷你中文版所致,也有人是安装过一个IE下载增强工具后卸载出了问题所致.一般可 ...

最新文章

  1. linux多进程server 进程池_Python 中的进程池与多进程
  2. ConcurrentLInkedQueue队列
  3. element ui table scrollTop 滚动到行头或行尾
  4. java基础之匿名内部类
  5. 作者:吴城文,男,清华大学计算机科学与技术系硕士生。
  6. php shell,php命令行写shell实例详解
  7. 安装好panel部署MySQL_实战三种方式部署 MySQL5.7
  8. Android中的Can't create handler inside thread that has not called Looper.prepare()异常
  9. ES6中Promise的入门(结合例子)
  10. 5款自动爬取数据的神器!
  11. eNSP实验vlan及交换机接口类型配置
  12. ssdb leveldb ldb文件恢复 ext4magic extundelete
  13. 推荐收藏 | 掌握这些步骤,机器学习模型问题药到病除
  14. ffmpeg js转换音频_webRTC使用ffmpeg.js将webm转换为mp4
  15. 树莓派摄像头无法识别 mmal
  16. UVA340紫外线灯管
  17. 组策略应用:软件分配及软件发布
  18. 2019年有效的rtsp流媒体测试地址整理汇总
  19. 在计算机技能大赛上的总结发言,我院在全省职业院校技能大赛工作总结交流会上作典型发言...
  20. 深度学习数学基础-概率与信息论

热门文章

  1. webpack编译时No PostCSS Config的解决方法
  2. elasticsearch-6.0.1安装
  3. apt-get update 问题 及gcc高亮
  4. Mysql数据库安全管理配置
  5. hdu 4747 mex 线段树+思维
  6. winform TopMost
  7. 控制台资费管理主菜单java_java毕业设计_springboot框架的高速公路收费管理系统...
  8. mysql教程目录_MySql目录(二)
  9. play 连接mysql_Play framework 2.x 连接mysql | 学步园
  10. pil 图像最大值_第97天:图像库 PIL(二)