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


Posted in Javascript onNovember 03, 2017

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

demo项目的结构

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

直接贴代码了

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>

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

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

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

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上拉加载更多下拉刷新数据的封装过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 图片缩放(按比例)控制代码
May 27 Javascript
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
javascript中基本类型和引用类型的区别分析
May 12 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
Dec 17 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
jQuery zTree如何改变指定节点文本样式
Oct 16 jQuery
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
基于ES6作用域和解构赋值详解
Nov 03 #Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 #Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 #Javascript
React-intl 实现多语言的示例代码
Nov 03 #Javascript
ztree实现左边动态生成树右边为内容详情功能
Nov 03 #Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
Nov 03 #Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 #Javascript
You might like
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python实现抓取网页并且解析的实例
2014/09/20 Python
python中reader的next用法
2018/07/24 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python实现指定ip端口扫描方式
2019/12/17 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
ECCO俄罗斯官网:北欧丹麦鞋履及皮具品牌
2020/06/26 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
投资意向书范本
2014/04/01 职场文书
文员求职信
2014/07/15 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
Java的Object类的九种方法
2022/04/13 Java/Android
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python