• 用mescroll实现无限上拉增加数据,下拉刷新数据 (学习笔记)


    最近自己做一个web app需要用到上拉查询下页数据,网上看了很多很多帖子,发现并不能快速的套用,总是会出现各种问题无法使用,于是无奈自己跑去看了官方api文档,终于做了出来,至此做个笔记,以后用到可以直接复制粘贴套用,好了不废话了,进入正题。

    1.需要引用 mescroll.min.css , mescroll.min.js

    这两个文件可以去http://www.mescroll.com/load.html下载,

    也可以选择引用cdn:

    // jsdelivr的CDN:
            <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mescroll.js@1.4.0/mescroll.min.css">
            <script src="https://cdn.jsdelivr.net/npm/mescroll.js@1.4.0/mescroll.min.js" charset="utf-8"></script>

    2.添加以下布局(容纳操作内容的容器)

      <div id="mescroll" class="mescroll"> //id可以改,而"mescroll"的class不能删
            <div> //这个div不能删,否则上拉加载的布局会错位.(可以改成ul或者其他容器标签)
                        //内容...
            </div>
        </div>

    3.在head中添加style固定mescroll的div高度. 推荐通过定位的方式,简单快捷: (点此查看其他方法)

    <style>
    .mescroll{
                position: fixed;
                top: 44px;
                bottom: 0;
                height: auto; /*如设置bottom:50px,则需height:auto才能生效*/
            }
    </style>

    4. 创建mescroll对象(我是单独建了一个js文件) :

        var mescroll = new MeScroll("mescroll", { //第一个参数"mescroll"对应上面布局结构div的id
            //如果您的下拉刷新是重置列表数据,那么down完全可以不用配置,具体用法参考第一个基础案例
            //解析: down.callback默认调用mescroll.resetUpScroll(),而resetUpScroll会将page.num=1,再触发up.callback
         down: {
             auto:false,//是否在初始化完毕之后自动执行下拉回调callback; 默认true
                callback: downCallback, //下拉刷新的回调
         },
         up: {
             auto:true,//初始化完毕,是否自动触发上拉加载的回调
                isBoth: true, //上拉加载时,如果滑动到列表顶部是否可以同时触发下拉刷新;默认false,两者不可同时触发; 这里为了演示改为true,不必等列表加载完毕才可下拉;
                isBounce: false, //此处禁止ios回弹,解析(务必认真阅读,特别是最后一点): http://www.mescroll.com/qa.html#q10
                callback: upCallback, //上拉加载的回调
                /*toTop:{ //配置回到顶部按钮
                    src : "../res/img/mescroll-totop.png", //默认滚动到1000px显示,可配置offset修改
                    //offset : 1000
                }*/
                page: {
                    num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
                    size: 5 //每页数据条数,默认10
                }
         }
    });

    5. 处理回调 :

     //下拉刷新的回调
        function downCallback() {
             $.ajax({
                 url: '',
                 success: function(data) {
                     //联网成功的回调,隐藏下拉刷新的状态;
                     mescroll.endSuccess(); //无参
                     //设置数据
                     //setXxxx(data);//自行实现 TODO
                 },
                 error: function(data) {
                     //联网失败的回调,隐藏下拉刷新的状态
                     mescroll.endErr();
                 }
             });
        }
        //上拉加载的回调 page = {num:1, size:5};(这里size我在上面设置成5了,默认是10) num:当前页 默认从1开始, size:每页数据条数,默认10
        function upCallback(page) {
       /*     var pageIndex = page.num-1;*/ //若想从num=0开始,就把前面的注释打开。
            $.ajax({
                url: 'xxxxxxxx' + '?' + 'pageNum=' + page.num + '&pageSize=' + page.size,
                dataType:'json',
                type:'GET',          
                success: function(curPageData) {
               //方法二(推荐): 后台接口有返回列表的总数据量 totalSize
              //必传参数(当前页的数据个数, 总数据量)             
              mescroll.endBySize(curPageData.shopList.length, curPageData.count);

               //这里面还有一堆方法,根据自己后端情况选择
               
                 

      //设置列表数据,自行实现,里面写你遍历像前台塞值过程   setListData(curPageData); }, error: function(e) { //联网失败的回调,隐藏下拉刷新和上拉加载的状态 mescroll.endErr(); } }); } //具体实现自行定义 function setListData(curPageData){ var html = ''; //这里,我后台返回的是个map集合,所以遍历店铺列表,拼接出卡片集合,具体自行定义 curPageData.shopList.map(function(item, index) { html += '' + '<div class="withdrawals-panel card" data-shop-id="' + item.shopId + '">' + '<div class="groupby-img-panle "><a href="#"><img src="' + item.shopImg + '" class="am-img-responsive" /></a></div>' + '<div class="groupby-info-panle">' + '<h3>' + item.shopName + '</h3>' + '<p>' + item.shopDesc + '</p>' + '<p>' + new Date(item.lastEditTime).Format("yyyy-MM-dd") + '</p>' + '</div>' + '</div>'; }); $('.list-div').append(html); }

    至此功能已经实现,以此笔记 记录使用过程。

  • 相关阅读:
    Django Admin 管理工具
    老男孩培训机构老师的博客
    pycharm版本选择并安装
    Linux命令-自动挂载文件/etc/fstab功能详解
    django urls路由匹配分发
    django templates模板
    Django models模型
    django views视图函数
    JDK与JRE、JVM三者间的关系及JDK的安装部署
    django 第一个项目测试
  • 原文地址:https://www.cnblogs.com/xk920/p/10063565.html
Copyright © 2020-2023  润新知