这次做一个H5的页面,需要用到上拉加载,下拉刷新的功能,在网上看到ximen写的dropload.js可以满足需求(此处致谢作者),但是用的时候还是踩了一些坑,这里记录下来备忘。

一些小问题:
1. me.noData(); 和 me.noData(true);

表示当前无数据,也就是会在下方出现 (暂无数据)的表示
me.noData(false);则表示有数据,这时不会显示(暂无数据)

2. 如果不希望用户继续加载数据则需要锁定,这时候需要用 me.lock(); 如果需要开放则需要 me.unlock();

有个比较麻烦的点是 :  你如果仅仅 me.unlock()了,其实你会发现无法下拉,为啥呢? 因为 me.noData(), 这里需要告诉dropload有数据了,继续吧, 所以需要调用 me.noData(false)

1. 调用handler

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
var searchHelper = {
        droploader: null,
         
        params: {
            pageNo: 1,
            pageSize: 10
        },
         
        init: function() {
            var me = searchHelper;
             
            me.droploader = $('.free-list').dropload({
                scrollArea : window,
                loadUpFn: function(wo) {
                    me.refreshFunc(wo);
                },
                loadDownFn: function(wo) {
                    me.loadFunc(wo);
                }
            });
        },
         
        refreshFunc: function(droploader) {
            var me = searchHelper;
             
            me.params.pageNo = 1;
            $.ajax({
                type: 'POST',
                url: '/search/test',
                dataType: 'json',
                data: me.params,
                success: function(result) {
                    //重置
                    droploader.resetload();
                     
                    if(result.statusCode == 0 && result.data && result.data.length > 0) {
                        me.resetRenderFunc();
                        me.renderFunc(result.data);
                        //有数据
                        droploader.noData(false);
                        me.params.pageNo++;
                    } else {
                        //无数据
                        droploader.noData();
                    }
                    //重置
                    droploader.unlock();
                },
                error: function(xhr, type) {
                    console.log('加载数据错误-' + type);
                    droploader.resetload();
                }
            });
        },
         
        loadFunc: function(droploader) {
            var me = searchHelper;
             
            $.ajax({
                type: 'POST',
                url: '/search/test',
                dataType: 'json',
                data: me.params,
                success: function(result) {
                    if(result.statusCode == 0 && result.data && result.data.length > 0) {
                        me.renderFunc(result.data);
                    } else {
                        //锁定
                        droploader.lock();
                        //无数据
                        droploader.noData();
                    }
                    //重置
                    droploader.resetload();
                    me.params.pageNo++;
                },
                error: function(xhr, type) {
                    console.log('加载数据错误-' + type);
                    droploader.resetload();
                }
            });
        },
         
        renderFunc: function(data) {
            var info = '';
            $.each(data, function(index, entity) {
              info += '<li>' + entity + '</li>';
            });
            $('.free-list ul').append(info);
        },
         
        resetRenderFunc: function() {
            $('.free-list ul').empty();
        }
};

2. [代码]外部重新加载数据的方式

1
2
3
4
5
6
7
8
$('#btn').click(function() {
        $('.free-list ul').empty();
        searchHelper.params.pageNo = 1;
        // 解锁
        searchHelper.droploader.unlock();
        searchHelper.droploader.noData(false);
        searchHelper.droploader.resetload();
    });

转自:simananzhui

dropload的使用记录的更多相关文章

  1. 下拉加载dropload.js

    使用下拉加载 使用需要引用的css <link rel="stylesheet" href="../dist/dropload.css"> 使用需要 ...

  2. 移动端实现上拉加载更多(使用dropload.js vs js)

    做下笔记,:移动端实现上拉加载更多,其实是数据的分段加载,在这里为了做测试我写了几个json文件作为分段数据: 方式一:使用dropload.js; 配置好相关参数及回调函数就可使用:代码如下 var ...

  3. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  4. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  5. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  6. 2015 西雅图微软总部MVP峰会记录

    2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...

  7. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  8. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  9. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

随机推荐

  1. angular 调用element的 onfocus onkeydown onblur等事件

    项目里要实现一个input验证通过就切换到下一个input的功能 当然用jq dom操作很简单  ,大家都懂,现在用 angular,mvc 数据模型控制分离,不想再dom操作怎么办 以下方法 < ...

  2. python mysql开发日志

    开始做python 的数据库访问了,暂时选定了mysql数据库.原本想使用ORM,后来考虑到项目的情况是:表结构不复杂,但是数据库非常大.还是自己来操作sql,不过PYTHON的那些数据库ORM的代码 ...

  3. Introduction to One-class Support Vector Machines

    Traditionally, many classification problems try to solve the two or multi-class situation. The goal ...

  4. 在java中为什么要把main方法定义为一个static方法?

    我们知道,在C/C++当中,这个main方法并不是属于某一个类的,它是一个全局的方法,所以当我们执行的时候,c++编译器很容易的就能找到这个main方法,然而当我们执行一个java程序的时候,因为ja ...

  5. 【刷题】BZOJ 5091 [Lydsy1711月赛]摘苹果

    Description 小Q的工作是采摘花园里的苹果.在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两端连接着两棵不同的苹果树.假设第i棵苹果树连接着d_i条道路.小Q将会按 ...

  6. SpringBoot的基础

    概念 Spring的优缺点 1. 优点(AOP和IOC简化开发) Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品.无需开发重量级的E ...

  7. APK反编译之二:工具介绍

    前面一节我们说过,修改APK最终是通过修改smali来实现的,所以我们接下来介绍的工具就是如何把APK中的smali文件获取出来,当然同时也需要得到AndroidManifest.xml等文件.直接修 ...

  8. c++ 容器弊端

    1.stack 不能直接清空,要 while (!s.empty()) s.pop(); 2.vector 增添.删除数据,也许vector首尾的地址会发生改变 如: ( watch f.begin( ...

  9. echarts彩虹柱状图 每个bar显示不同颜色, 标题在不同位置 ,工具中有可以直接保存为图片下载,平均线的添加

    可以参考: https://echarts.baidu.com/echarts2/doc/example.html https://echarts.baidu.com/echarts2/doc/doc ...

  10. RF - selenium - open browser

    *** Settings ***Library Selenium2Library *** Test Cases ***Open baidu with Chrome Open Browser http: ...