下拉刷新,采用主页面和子页面嵌套的形式,代码在ios上一切正常,在android设备上下拉不了,原因不明,Mui版本0.8,最新的,android设备试过不止一个型号,应该不是设备问题,求解!
- 发布:2014-12-17 15:52
- 更新:2017-09-13 20:59
- 阅读:4290
二八中医 (作者)
父页面:
<script>
mui.init({
swipeBack: false,
subpages: [{
id: 'pullrefresh-down-content',
url: 'pullrefresh-down-content.html',
styles: {
top: '48px',
bottom: '0px'
}
}]
});
</script>
子页面:
<script>
mui.init({
swipeBack: false,
pullRefresh: {
container: '#pullrefresh',
down: {
callback: pulldownRefresh
}
}
});
function pulldownRefresh() {
plus.nativeUI.showWaiting();
queryDataFlow(function() {
mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //refresh completed
plus.nativeUI.closeWaiting();
});
}
mui.plusReady(function() {
plus.nativeUI.showWaiting();
queryDataFlow(function() {
plus.nativeUI.closeWaiting();
});
});
</script>
这是刷新相关的代码,和官方例子应该是一样的,而且同样的代码在ios上下拉可以正常响应,如有需要完整代码,留个邮箱地址,我发完整代码给你
二八中医 (作者)
试过了,更新0.9.0的Mui,在不添加.mui-content的情况下,可以实现下拉刷新,不过首次加载页面不行,是不是跟我的下拉刷新是在首页有关? 不确定,不过估计可能是代码问题吧
4***@qq.com - 112233
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>入口页面</title>
<link href="css/mui.min.css" rel="stylesheet" />
<script src="js/mui.min.js"></script>
<script src="js/mui.js"></script>
</head>
<body>
<div id="refreshContainer" class="mui-content mui-scroll-wrapper"style="width: 100%;height: 100%;">
<div class="mui-scroll">
<!--数据列表-->
<ul class="mui-table-view mui-table-view-chevron">
</ul>
</div>
</div>
<script type="text/javascript" charset="utf-8">
//mui.init();
/*mui.plusReady(function() {
mui.openWindow({
url: "main1.html",
id: "main"
});
});*/
mui.init({
swipeBack: false,
pullRefresh : {
container:"#refreshContainer",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等
down : {
height:50,//可选,默认50.触发下拉刷新拖动距离,
auto: true,//可选,默认false.自动下拉刷新一次
contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容
callback :pullfreshfunction //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
}
}
});
function pullfreshfunction() {
//业务逻辑代码,比如通过ajax从服务器获取新数据;
alert("aaaaa");
//注意,加载完新数据后,必须执行如下代码,注意:若为ajax请求,则需将如下代码放置在处理完ajax响应数据之后
mui('#refreshContainer').pullRefresh().endPulldownToRefresh();
}
</script>
</body>
</html>
copy官网上的,在Hbudler上可以,在安卓上就不行
Lspring - 无
我也遇到这个问题了,IOS上可以,android上失效。应该是和数据绑定有问题,个人猜在数据没有获取到之前下拉刷新就已经初始化,导致页面没有获取到数据之前就已经绑定了,页面获取到数据后再绘制DOM层,之前绑定的container失效,所以失效。不知道是不是这个问题。
这是官网给的解决方案:
http://ask.dcloud.net.cn/question/1125
二八中医 (作者)
setTimeout 确实可以解决这个问题,
后面的调试发现,对存在父子页面的这种情况,
ios和android在父子页面的初始化顺序和速度上都有
差异,这也导致了在页面加载时就执行子页面的下拉
组件初始化的话,ios能及时的加载并完成子页面的下拉初
始化,而在android上,子页面的加载要相对缓慢得多,
因此就会出现下拉组件无效的问题。
简单说,就是android上的子页面初始化下拉组件的操作可能
在子页面完全加载完成前就执行了,因此下拉组件初始化失败。
等烟雨
请问就在一个页面里下拉刷新可以吗,不分子页面和主页面
2015-01-13 10:24