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 相关文章推荐
为jQuery.Treeview添加右键菜单的实现代码
Oct 22 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
js读取配置文件自写
Feb 11 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
Jun 19 Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
Ajax常用封装库——Axios的使用
May 08 Javascript
基于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设计模式 Facade(外观模式)
2011/06/26 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
Python深入学习之内存管理
2014/08/31 Python
django中的setting最佳配置小结
2017/11/21 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python障碍式期权定价公式
2019/07/19 Python
python如何把字符串类型list转换成list
2020/02/18 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
家长评语大全
2014/01/22 职场文书
幼儿教师考核制度
2014/01/25 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
精彩的广告词
2014/03/19 职场文书
意向书范本
2014/07/29 职场文书
体育活动总结
2015/02/04 职场文书
幼师个人总结范文
2015/02/28 职场文书
医德医风自我评价2015
2015/03/03 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
致运动员赞词
2015/07/22 职场文书
考研经验交流会策划书
2015/11/02 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL