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= "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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
MUI框架提供了一个非常方便的下拉刷新组件`mui.pullRefresh`,可以轻松实现下拉刷新功能。具体实现步骤如下: 1. 在需要添加下拉刷新功能的页面引入`mui.js`和`mui.css`文件。 2. 在页面中添加一个`mui-content`的div容器,在该容器中添加需要下拉刷新的内容。 3. 在该容器上添加`mui-scroll-wrapper`和`mui-scroll`类,使之成为一个可滚动区域。 4. 在该容器上添加`mui-pull-bottom-tips`类,表示底部刷新提示。 5. 在该容器上添加`data-pull-to-refresh="true"`属性,表示支持下拉刷新。 6. 在页面底部添加一个`mui-pull-bottom-wrapper`的div容器,用于实现底部刷新功能,同时在该容器上添加一个`data-autoload="true"`属性,表示页面首次加载时自动触发底部刷新。 7. 在JS文件中初始化下拉刷新组件,绑定下拉刷新和底部刷新事件。 下面是一个简的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MUI下拉刷新实现示例</title> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"> <link rel="stylesheet" href="mui.min.css"> </head> <body> <header class="mui-bar mui-bar-nav"> <h1 class="mui-title">MUI下拉刷新实现示例</h1> </header> <div class="mui-content mui-scroll-wrapper"> <div class="mui-scroll"> <ul class="mui-table-view"> <li class="mui-table-view-cell">列表项1</li> <li class="mui-table-view-cell">列表项2</li> <li class="mui-table-view-cell">列表项3</li> <li class="mui-table-view-cell">列表项4</li> <li class="mui-table-view-cell">列表项5</li> </ul> </div> </div> <div class="mui-pull-bottom-wrapper"> <span class="mui-pull-bottom-tips">正在加载...</span> </div> <script src="mui.min.js"></script> <script> mui.init({ pullRefresh: { container: '.mui-scroll-wrapper', down: { callback: function () { setTimeout(function () { mui('.mui-scroll-wrapper').pullRefresh().endPulldownToRefresh(); }, 1000); } }, up: { contentrefresh: '正在加载...', callback: function () { setTimeout(function () { mui('.mui-scroll-wrapper').pullRefresh().endPullupToRefresh(true); }, 1000); } } } }); </script> </body> </html> ``` 注意:在实际开发中,需要根据实际需要自定义下拉和底部刷新的样式和动画效果。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值