• dropload的使用记录


    这次做一个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 

  • 相关阅读:
    NIO[读]、[写]在同一线程(单线程)中执行,让CPU使用率最大化,提高处理效率
    解码(ByteBuffer): CharsetDecoder.decode() 与 Charset.decode() 的不同
    ACCESS与SQL Server下SQL Like 查询的不同
    试着用c写了一个多线程的同步
    收藏:c语言的多线程同步
    java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中
    Linux进程管理
    MySQL数据备份
    MySQL索引
    Socket.IO 概述
  • 原文地址:https://www.cnblogs.com/hubl/p/5761936.html
Copyright © 2020-2023  润新知