html:
<div class="tmsg-content">
<div id="t-msg" class=" mui-scroll-wrapper" data-scroll = "1">
<div class="mui-scroll">
<ul id='msgList' class="mui-scroll mui-table-view msg-list content-padding mui-table-view-chevron">
</ul>
</div>
</div>
</div>js:
function pullRefresh(){
mui("#pullRefresh").pullRefresh({
indicators: true, //是否显示滚动条
deceleration:deceleration, //阻尼系数,系数越小滑动越灵敏
bounce: true, //是否启用回弹
down:{
auto: true,
height:50,
contentrefresh : "",//可选,正在加载状态时,上拉加载控件上显示的标题内容
contentnomore:'',//可选,请求完毕若没有更多数据时显示的提醒内容;
callback:function(){//必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
window.setTimeout(function(){
if(total === 0) {
getListDataFromNet();
}else if(currentTotal < total){
getListDataFromNet();
}
mui('#pullRefresh').pullRefresh().endPulldownToRefresh(true);
},500);
}
}
})
}
//获取数据
function getListDataFromNet() {
mui.post('/url',
{
pageNum: NUM,
pageSize: size,
...
},
function (curPageData) {
if (!curPageData.success) {
}
else {
...
//微信的加载是加载到当前消息之前,但是页面不会滚动。我的做法是,将加载完成后的页面迅速滚动到加载之前的位置,基本上能达到微信的效果。
newH = ui.areaMsgList.offsetHeight; //数据加载之后的页面
scrollH = newH - oldH;
mui('#t-msg').pullRefresh().reLayout();
mui('#t-msg').pullRefresh().scrollTo(0, -scrollH + 25, 100); //这里我加25是因为我想像微信一样把新的消息显示半条出来,提示用户新消息加载成功了
oldH = ui.areaMsgList.offsetHeight;//更新页面初始高度
}
}, 'json'
);
}//关于双滚动条的问题,也是纠结了我不少时间,然后我就去研究源代码。后来发现,加了data-scroll = "1"之后就好了。还有就是不要重新定义滚动了,例如:var scroll = mui("#pullRefresh").scroll();这样是不可行的。如果有遇到双滚动条的问题,不妨试试,我就是这样解决的,现在用着很流畅。
版权声明:本文为Ustupid741原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。