mescroll.js+springmvc实现下拉加载数据及按条件查询

1 篇文章 0 订阅
1 篇文章 0 订阅
首先导入

<link rel="stylesheet" href="/css/mescroll.min.css">

<script type="text/javascript" src="/js/mescroll.min.js"></script>

页面如下

<div  class="search-bar clearfix">
    <input type="text" id="keyword" value="${query.keyword}" name="keyword" placeholder="信息 | 手机号 | 公司名称">
    <button οnclick="searchIndex(event)" style="float:right ">搜索</button>
</div>
<div class="content mescroll" id="mescroll" >
      <div id="dataList" class="data-list">
             <!-- 这里是ajax返结果list -->
      </div>

</div>
js代码实现如下:
 
<script type="text/javascript">
//是否为PC端,如果是scrollbar端,默认自定义滚动条
var isPC = typeof window.orientation == 'undefined' ;
    //创建MeScroll对象
   $(function(){
    var mescroll = new MeScroll("mescroll", {
        up: {
             use: true, //是否初始化上拉加载; 默认true
                           auto: true, //是否在初始化时以上拉加载的方式自动加载第一页数据; 默认true
                           isLock: false, //是否锁定上拉,默认false
                           isBoth: true, //上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认false,两者不可同时触发; 这里为了演示改为true,不必等列表加载完毕才可下拉;
                           isBounce: false, //是否允许ios的bounce回弹;默认true,允许回弹; 此处配置为false,可解决微信,QQ,Safari等等iOS浏览器列表顶部下拉和底部上拉露出浏览器灰色背景和卡顿2秒的问题
                           callback: upCallback, //上拉回调,此处可简写; 相当于 callback: function (page, mescroll) { getListData(page); }
                           page: {
                              num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
                              size: 10, //每页数据条数
                              time: null //加载第一页数据服务器返回的时间; 防止用户翻页时,后台新增了数据从而导致下一页数据重复;
                           },
                           noMoreSize: 5, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
                           offset:500, //离底部的距离
                           toTop: {
                              //回到顶部按钮,需配置src才显示
                              warpId: null, //父布局的id; 默认添加在body中
                              src: "/res/img/mescroll-totop.png", //图片路径,默认null;
                              html: null, //html标签内容,默认null; 如果同时设置了src,则优先取src
                              offset: 1000, //列表滚动多少距离才显示回到顶部按钮,默认1000
                              warpClass: "mescroll-totop", //按钮样式,参见mescroll.css
                              showClass: "mescroll-fade-in", //显示样式,参见mescroll.css
                              hideClass: "mescroll-fade-out", //隐藏样式,参见mescroll.css
                              duration: 300, //回到顶部的动画时长,默认300ms
                              supportTap: false //默认点击事件用onclick,会有300ms的延时;如果您的运行环境支持tap,则可配置true;
                           },
                           loadFull: {
                              use: false, //列表数据过少,不足以滑动触发上拉加载,是否自动加载下一页,直到满屏或者无更多数据为止;默认false,因为可通过调高page.size或者嵌套mescroll-bounce的div避免这个情况
                              delay: 500 //延时执行的毫秒数; 延时是为了保证列表数据或占位的图片都已初始化完成,且下拉刷新上拉加载中区域动画已执行完毕;
                           },
                           empty: {
                              //列表第一页无任何数据时,显示的空提示布局; 需配置warpId或clearEmptyId才生效;
                              warpId:null, //父布局的id; 如果此项有值,将不使用clearEmptyId的值;
                              icon: "/res/img/mescroll-empty.png", //图标,默认null
                              tip: "暂无相关数据~", //提示
                              supportTap: false //默认点击事件用onclick,会有300ms的延时;如果您的运行环境支持tap,则可配置true;
                           },
                           clearId: null, //加载第一页时需清空数据的列表id; 如果此项有值,将不使用clearEmptyId的值;
                           clearEmptyId: "dataList", //相当于同时设置了clearId和empty.warpId; 简化写法,默认null;
                           hardwareClass: "mescroll-hardware", //硬件加速样式,动画更流畅,参见mescroll.css
                           warpId: null, //可配置上拉加载的布局添加到指定id的div;默认不配置,默认添加到mescrollId
                           warpClass: "mescroll-upwarp", //容器,装载布局内容,参见mescroll.css
                           htmlLoading: '<p class="upwarp-progress mescroll-rotate"></p><p class="upwarp-tip">加载中..</p>', //上拉加载中的布局
                           htmlNodata: '<p class="upwarp-nodata">-- END --</p>', //无数据的布局
                           inited: function(mescroll, upwarp) {
                              console.log("up --> inited");
                              //初始化完毕的回调,可缓存dom 比如 mescroll.upProgressDom = upwarp.getElementsByClassName("upwarp-progress")[0];
                           },
                           showLoading: function(mescroll, upwarp) {
                              console.log("up --> showLoading");
                              //上拉加载中.. mescroll.upProgressDom.style.display = "block" 不通过此方式显示,因为ios快速滑动到底部,进度条会无法及时渲染
                              upwarp.innerHTML = mescroll.optUp.htmlLoading;
                           },
                           showNoMore: function(mescroll, upwarp) {
                              console.log("up --> showNoMore");
                              //无更多数据
                              upwarp.innerHTML = mescroll.optUp.htmlNodata;
                           },
                           onScroll: function(mescroll, y, isUp){ //列表滑动监听,默认onScroll: null;
                              //y为列表当前滚动条的位置
                              //console.log("up --> onScroll 列表当前滚动的距离 y = " + y + ", 是否向上滑动 isUp = " + isUp);
                           },
                           scrollbar: {
                              use: isPC, //默认只在PC端自定义滚动条样式
                              barClass: "mescroll-bar"
                           }
                        }
    });
    //上拉加载的回调 page = {num:1, size:3}; num:当前页 默认从1开始, size:每页数据条数,默认10
    function upCallback(page) {
                //查询条件
                 var  keyword=$("#keyword").val();
            getListDataFromNet(page.num,page.size,keyword,function(data){
                    page.num++;
               //设置列表数据
               setDataList(data.list, true);
            }, function(){
               //联网失败的回调,隐藏上拉加载的状态
               alert("endErr1");
                   mescroll.endErr();
            });
    }
            function getListDataFromNet(pageNum,pageSize,keyword,successCallback,errorCallback) {
                    var dateline= new Date().getTime();
            //延时一秒,模拟联网
                     $.ajax({url: "/**/**",
                                              dataType:'json',
                                              type:'post',
                                                data:{
                                                      "page":pageNum,
                                                      "size":pageSize,
                                                      "keyword":keyword,
                                                      "_t":dateline
                                                     },
                                              success: function(data) {
                                                    mescroll.endSuccess(data.length);
                                                    successCallback(data);
                                              },
                                              error: function(e) {
                                                  //联网失败的回调,隐藏下拉刷新和上拉加载的状态
                                                   mescroll.endErr();
                                                errorCallback;

                                              }
                                          });

         }

    function setDataList(data, isAppend){
        var _html=$("#dataList").html();
        var listDom=document.getElementById("dataList");
                                       for(var i=0;i<data.length;i++){
                                      var   _html= "<div class='item-heading clearfix'>"
                                                                      +"<a href='javaScript:void(0)' οnclick='showDetail('"+data[i]['mm_msg_id']+"')' class='left clearfix'>"
                                                                         +"  <img src='"+data[i]['mm_emp_cover']+"' alt='' class='head-pic'>"
                                                                           +"<div class='detail'>"
                                                                             +"  <h1 class='company'>"+data[i]['mm_emp_company']+"&nbsp;"+data[i]['mm_emp_nickname']+"</h1>"
                                                                              +" <h3 class='time'>"+data[i]['dateline']+"&nbsp;"+data[i]['area']+"</h3>"
                                                                          +" </div>"
                                                                      +" </a>"
                                                                     +"  <div class='right'>"
                                                                         +"  <div class='top clearfix'>";
                                                                         if(data[i]['is_miaomu']=='1'){
                                                                         _html=_html+"<img src='/img/tree_icons_trust.png' alt=''>";
                                                                         }
                                                                         if(data[i]['is_chengxin']=='1'){
                                                                         _html=_html+"<img src='/img/tree_icons_group.png' alt=''>";
                                                                         }
                                                                           _html=_html+" </div>"
                                                                          +" <div class='botton clearfix'>";
                                                                          switch(data[i]['mm_level_num']){
                                                                                    case 1:
                                                                                      _html=_html+"<img src='/img/tree_icons_star_2.png' alt=''>";
                                                                                       break;
                                                                                    case 2:
                                                                                      _html=_html+"<img src='/img/tree_icons_star_3.png' alt=''>";
                                                                                      break;
                                                                                    case 3:
                                                                                      _html=_html+"<img src='/img/tree_icons_star_4.png' alt=''>";
                                                                                      break;
                                                                                    case 4:
                                                                                    _html=_html+"<img src='/img/tree_icons_star_5.png' alt=''>";
                                                                                     break;
                                                                                    default:
                                                                                      _html=_html+"<img src='/img/tree_icons_star_1.png' alt=''>";
                                                                                      break;
                                                                           }
                                                                        _html=_html +"  </div>"
                                                                     +"  </div>"
                                                                  +" </div>"
                                                                  +" <a class='item-content' href='javaScript:void(0)' οnclick='showDetail('"+data[i]['mm_msg_id']+"')'>"
                                                                    +data[i]['mm_msg_content']+" </a>"
                                                                  +" <div class='item-footer clearfix'>"
                                                                    +"   <a href='tel:"+data[i]['mm_emp_mobile']+"' class='button-phone'></a>"
                                                                    +"   <a type='button' href='javaScript:void(0)' οnclick='favourClick('"+data[i]['mm_msg_id']+"')'"
                                                                     +"     class='button-fav'>"
                                                                    +"   </a>";
                                                                    if(data[i]['mm_msg_video']==null && data[i]['mm_msg_picurl']!=""  && data[i]['mm_msg_picurl']!=null){
                                                                    _html=_html+" <a type='button' οnclick='showDetail('"+data[i]['mm_msg_id']+"')' class='button-pic'></a>";
                                                                    }else if(data[i]['mm_msg_video']!="" && data[i]['mm_msg_video']!=null){
                                                                    _html=_html+"<a type='button' οnclick='showDetail('"+data[i]['mm_msg_id']+"')' class='button-video'></a>";
                                                                    }
                                                                _html=_html +" </div>";
                                                   var liDom=document.createElement("div");
                                                   liDom.setAttribute("class","item");
                                                                   liDom.innerHTML=_html;

                                                                   if (isAppend) {
                                                                      listDom.appendChild(liDom);//加在列表的后面,上拉加载
                                                                   } else{
                                                                      listDom.insertBefore(liDom, listDom.firstChild);//加在列表的前面,下拉刷新
                                                                   }
                                       }



     }
     });

     function searchIndex(e) {
                         var _index = $("#index").val();
                         var size = $("#size").val();
                         var keyword = $("#keyword").val();
                         var page={num:1,size:10};
                         alert("123");
                       getListDataFromNet(page.num,page.size,keyword, function(data){
                                           page.num++;
                                       //设置列表数据
                                       setDataList(data.list, true);
                                    }, function(){
                                       //联网失败的回调,隐藏上拉加载的状态
                                       alert("endErr1");
                                           mescroll.endErr();
                                    });
                    }
    </script>
关于
 new MeScroll的配置请参考 http://www.mescroll.com/api.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值