这次做一个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. C++ STL 常用算术和生成算法

    C++ STL 常用算术和生成算法 accumulate() accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> ...

  2. Nagios通过企业微信报警

    主要分两部分进行: 注册企业微信,自建应用,获取与发送消息相关的信息: 编写调用微信API脚本(bash),配置Nagios微信报警: 一.企业微信 1.注册企业微信:https://work.wei ...

  3. 学习Spring Boot:(五)使用 devtools热部署

    前言 spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后 ...

  4. 【BZOJ3551】Peaks加强版(Kruskal重构树,主席树)

    [BZOJ3551]Peaks加强版(Kruskal重构树,主席树) 题面 BZOJ Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相 ...

  5. HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)

    HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...

  6. C函数调用机制及栈帧指针

    http://blog.csdn.net/jjiss318/article/details/7185802

  7. Kotlin入门简介

    Kotlin的“简历” 来自于著名的IDE IntelliJ IDEA(Android Studio基于此开发) 软件开发公司 JetBrains(位于东欧捷克) 起源来自JetBrains的圣彼得堡 ...

  8. Android Studio中多项目共享Library

    FAQ: as的projectA中有一个commonLib的源码库模块,projectB要调用其中的commonLib, 这个有没有方案?不用手动拷贝aar的   方案1. 采用gradle配置参数方 ...

  9. 2016-2017 National Taiwan University World Final Team Selection Contest (Codeforces Gym) 部分题解

      D 考虑每个点被删除时其他点对它的贡献,然后发现要求出距离为1~k的点对有多少个. 树分治+FFT.分治时把所有点放一起做一遍FFT,然后减去把每棵子树单独做FFT求出来的值. 复杂度$nlog^ ...

  10. Golang构建HTTP服务(一)--- net/http库源码笔记

    搭建一个简单的Go Web服务器 Go语言标准库 - net/http 在学习Go语言有一个很好的起点,Go语言官方文档很详细,今天我们学习的Go Web服务器的搭建就需要用到Go语言官方提供的标准库 ...