搜索到的解决方法(我自己试的时候失败了):
1、需要把callback函数直接写到mui.init的配置那里,不要单独写一个函数然后调用
2、如果是ajax,必须在ajax执行后,执行
3、加延迟 也是可以的
setTimeout(nextRefresh, 1000);
function nextRefresh() {
mui('#refreshContainer').pullRefresh().endPullupToRefresh(false);
}
或者
function nextRefresh(){
setTimeout(function(){
mui('#refreshContainer').pullRefresh().endPullupToRefresh(false);
}, 1000);
}
参考:https://blog.youkuaiyun.com/bb159632478/article/details/85275176
参考:https://ask.dcloud.net.cn/question/52147
我测试成功的解决方法:
1、老的API使用endPullupToRefresh
,新的API使用endPullup
,我换成 endPullup
,就没有出错
2、我要用的是 endPulldown()
刷新成功后去关闭悬浮球,就没用到…
mui.init({
pullRefresh : {
container:"#pullrefresh",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等
down :{ //down 是 下拉 ,up:上拉
style:'circle',
height:50, //可选,默认50.触发下拉刷新拖动距离,
auto:false, //可选,默认false.首次加载自动下拉刷新一次
contentdown : "下拉可以刷新", //可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
contentover : "释放立即刷新", //可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
contentrefresh : "正在刷新...", //可选,正在刷新状态时,下拉刷新控件上显示的标题内容
callback:pullFunction //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;
}
}
});
var down = 1;
//下拉
// setTimeout(pullFunction,3000);
function pullFunction(){
setTimeout(function(){ //加载3秒后出现数据
// var html = "<span>我是下拉刷新的~~_"+down+"</span>";
var html = document.createElement('span');
html.innerHTML = "我是下拉刷新的__"+down+"哈哈哈哈哈<br>";
var ul_node = document.getElementById('news_ul');
var target_node = ul_node.children[0];
ul_node.insertBefore(html,target_node);
//结束
down++;
mui('#pullrefresh').pullRefresh().endPulldown(); //关闭圆球
},2000)
};
更新:还有一个我碰到的原因是在callback函数不要加括号,如下图:
(我加了一下括号或参数就报错了)