小微
小微
  • 发布:2015-01-24 17:44
  • 更新:2015-01-24 17:44
  • 阅读:15855

关于下拉刷新的使用心得

分类:MUI

我的这个页面是一个数据列表 ,分为上部导航main.htm,和下面业务数据(list.html).有一个新增页面,在操作新增页面后,返回主模块,并刷新数据。在使用过程中,经常出现刚进模块时,下拉刷新可以。新增页面返回后,下拉刷新失效了。现象就是下拉没有反应。

研究了差不多一个下午,发现原来是被webview挡住了。

在主模块新增页面使用的代码是

  document.getElementById("add").addEventListener('tap',function(){  
 	var nwaiting = plus.nativeUI.showWaiting();   
	var qdadd = plus.webview.create("add.html");   
	qdadd.addEventListener("loaded", function() {  
		nwaiting.close();  
		add.show();  
	}, false);  
});             

新增页面保存后,跳转主模块,原先的代码是

  mui.openWindow({  
    url: 'main.html',   
    id:'main'  
  });

但是这样的结果就是返回后,下拉不能滚动。经过我的多次测试,发现这个是webview的使用不当造成的。
新增页面现在的代码是

var parentview = plus.webview.currentWebview().opener();  
parentview.reload(true);  
plus.webview.currentWebview().close();

即关闭当前新增页在,刷新父页面。

如果plus.webview.currentWebview().close();这句话不写,我发现返回页面后,list.html距离导航会增加一定的距离,新增次数越多,距离越远,估记就是webview不断的重叠造成的。

具体原理不太清楚,起码问题解决了,供大家参考 。

7 关注 分享
DCloud_heavensoft 涛涛江水 ccfto dd多了个多 聚柚 Trust 1***@qq.com

要回复文章请先登录注册

dd多了个多

dd多了个多

谢谢你
2016-10-26 13:49
亦寒

亦寒

我问一下,下拉页面加载了很多东西之后,点击进入到其他页面,再返回来的时候下拉页面会重新加载,原来的状态丢失了。怎么才能返回到原来的下拉页面。
2016-10-16 10:29
ccfto

ccfto

think you 找了一晚上的原因~~哎!
2015-12-18 02:57
DCloud_UNI_CHB

DCloud_UNI_CHB

回复 gaus :
createNew是mui v1.7.0之后添加的,通过createNew参数,可以规避重复加载;
2015-09-03 18:05
gaus

gaus

回复 DCloud_UNI_CHB :
按照官方手册,mui.openWindow应该有一个createNew判断,如果存在webview,则直接显示。这里还存在重复加载的问题吗?
2015-09-03 14:16
如啼眼

如啼眼

我用的是mui.fire事件,预加载列表存在一个名fire的事件,新增成功后执行var detailPage = plus.webview.getWebviewById(fileFather);
mui.fire(detailPage, 'fire', {"id":id});mui.back();
2015-08-15 10:50
dcl

dcl

话说现在下拉刷新还是像原来那样,ios是同一webview, android是不同webview吗? 我觉得还是要像侧滑那样,让用户去选择啊,毕竟在mui要做的不单单是用在h5plus里的框架。 用在微信里什么的就不能用双webview模式了
2015-07-14 10:13
悠闲的蜗牛

悠闲的蜗牛

子页面有办法触发父页面的下拉刷新的waiting动画吗? reload 如果使用nativeUI.showWaiting() 总感觉效果不是很好
2015-01-28 23:27
DCloud_UNI_CHB

DCloud_UNI_CHB

问题原因在于:新增页面保存后,不能使用mui.openWindow重新打开主页面,这样会重复加载webview:
你的解决方案是正确的:关闭新增页面,刷新主界面(列表界面);
2015-01-25 10:10