首页 > 编程 > JavaScript > 正文

mui上拉加载更多下拉刷新数据的封装过程

2019-11-19 15:00:01
字体:
来源:转载
供稿:网友

辗转用mui做了两个项目,空下来把mui上拉加载更多,下拉刷新数据做了一个简单的封装,希望可以帮助到需要的朋友

demo项目的结构

直接贴代码了

index.html

mui上拉刷新下拉加载都这里了,两个方法搞定

<!DOCTYPE html><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>mui上拉刷新下拉加载demo--封装</title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="external nofollow" rel="stylesheet"/> <style type="text/css"> li{  height: 30px; line-height: 30px;  font-size: 14px;  color: #bbb;  text-indent: 4%;  border-bottom: 1px solid currentColor; } </style></head><body> <!--下拉刷新容器--> <div id="refreshContainer" class="mui-content mui-scroll-wrapper">  <div class="mui-scroll">  <!--数据列表-->  <ul class="mui-table-view mui-table-view-chevron" id="list">  </ul>  </div> </div></body><script type="text/javascript" charset="utf-8"> var pager = {};//分页 var totalPage;//总页码 pullRefresh(pager);//启用上拉下拉  function pullRefresh(){  mui("#refreshContainer").pullRefresh({  up:{   contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容    contentnomore:'没 有 更 多 数 据 了',//可选,请求完毕若没有更多数据时显示的提醒内容;   callback:function(){//必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;     window.setTimeout(function(){    getData(pager);    },500);   }   },   down : {    height:50,//可选,默认50.触发下拉刷新拖动距离,    auto: true,//可选,默认false.首次加载自动下拉刷新一次    contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容    contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容    contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容    callback :function(){ //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;    window.setTimeout(function(){     pager['size']= 3;//条数    pager['page'] = 1;//页码      //刷新要先清空父节点里面的子节点    var f = document.getElementById("list");    var childs = f.childNodes;    for(var i = childs.length - 1; i >= 0; i--) {     f.removeChild(childs[i]);    }    getData(pager);    },500);    }   }  }) } //这个方法是负责向接口请求数据的,你可以选择你喜欢的方式,我这里是直接用的mui.ajax function getData(params){  mui.ajax("/article/getArticlePage",{   data:{   "header":{"os":"wap","app":"xxxx","ver":1.0},   "data":params   },   dataType:'json',   type:'post',   headers:{'Content-Type':'application/json'},   success:function(data){     mui('#refreshContainer').pullRefresh().endPullupToRefresh(true);    //下面这坨都是在拼dom 你可以用jquery 或者是你所熟悉的angular,vue双向绑定    var returnData = data.data;    var element=document.getElementById("list");    var para;      var node;    for(var i = 0; i<returnData.length;i++){    para = document.createElement("li");    node = document.createTextNode(returnData[i].article_title)    para.appendChild(node);    element.appendChild(para);    }    //这里很重要,这里获取页码 公式:总条数/每页显示条数    totalPage = data.ext%pager.size!=0?    parseInt(data.ext/pager.size)+1:    data.ext/pager.size;    if(totalPage==pager.page){//总页码等于当前页码,停止上拉下拉    mui('#refreshContainer').pullRefresh().endPullupToRefresh(true);    }else{   pager.page++;   mui('#refreshContainer').pullRefresh().refresh(true);    }      },   error:function(xhr,type,errorThrown){   //异常处理;   console.log(type);   }   })  } </script></html>

代码就贴完了 就是看起来不是很好看

下面是效果图,想弄视频上来的 然后发现太鸡肋了 弄不上来  气死我了

PS:下面给大家分享一段示例代码:MUI 做上拉下拉加载更多数据小记

html代码

<div id="pullrefresh" class="mui-content mui-scroll-wrapper">     <div id="mui-scroll" class="mui-scroll">       <ul id="refresh-ul" class="mui-table-view">         <!-- 内容 -->       </ul>     </div>   </div> <script type="text/javascript"> mui('body').on('tap','a',function(){document.location.href=this.href;});//监听让页面A标签的超链接 是有效状态 mui.init({    pullRefresh : {     container:"#pullrefresh",//下拉刷新容器标识,querySelector能定位的css选择器均可,比如:id、.class等     up : {      height:50,//可选,默认50.触发下拉刷新拖动距离,      auto: true,//可选,默认false.自动下拉刷新一次      contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容      contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容      contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容      callback :function(){       //业务逻辑代码,比如通过ajax从服务器获取新数据;         //注意,加载完新数据后,必须执行如下代码,注意:若为ajax请求,则需将如下代码放置在处理完ajax响应数据之后          //mui('#refresh-ul').pullRefresh().endPullupToRefresh(); //refresh completed            var pagecount=$("#pagecount").val();           var page=$("#page").val();           pagecount=parseInt(pagecount);           page=parseInt(page);           page+=1;           $.ajax({             url:"/mobile/seckill/order/order_refresh_ajax.jhtml",             type: 'post',             datatype:'html',             data: {'pagecount': pagecount,'page':page},             async: false,//false代表只有在等待ajax执行完毕后才执行             success: function(data,msg){               $("#refresh-ul").append(data);               $("#page").val(page);             },             error: function(data,msg){               alert("error");             }             });         this.endPullupToRefresh(false);      } //必选,刷新函数,根据具体业务来编写,比如通过ajax从服务器获取新数据;     }    }   }); if(mui.os.plus) {   mui.plusReady(function() {     setTimeout(function() { mui('#pullrefresh').pullRefresh().pullupLoading(); }, 1000);   }); } else {   mui.ready(function() {      mui('#pullrefresh').pullRefresh().pullupLoading();    }); } function goShoppingCart() {   window.location.href = "/mobile/seckill/shoppingcart.jhtml"; } </script> 

总结

以上所述是小编给大家介绍的mui上拉加载更多下拉刷新数据的封装过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表