dropload.js 填坑之lock

在使用dropload插件时,如果向下滑到最后没有数据不调用lock函数,dropload还是会触发加载事件。可是当我们加上lock与unlock逻辑之后发现,在下拉加载时页面无法回归原样。

代码逻辑结构图

var dropload = $('.xxxx').dropload({
    domUp:{}
    domDown:{}
    loadUpFn:function(me){
        //调用加载数据函数
        loadData(page,rowlist);
    }
    loadDownFn:function(me){
        //调用加载数据函数
        loadData(page,rowlist);
    }
});

//定义:加载数据函数
function loadData(page,rowlist){
    $.ajax({
        success:function(response){
            //将数据转换为模板
            template(response.data);               
            if(请求数据条数 大于 查询结果的数据条数){
                dropload.lock();
                dropload.noData();
            }else{
                dropload.unlock();
                dropload.noData(false);
            }

            dropload.resetload();
        }

    });
}
//定义:加载模板函数
function template(data){
    ...
    return template;
}

逻辑上绝对是没有太大毛病的,可是当执行unlock()函数后,在调用下拉刷新loadUpFn ,刷新图标就无法回去了。

通过阅读源码我们发现。

// 解锁
    MyDropLoad.prototype.unlock = function(){
        var me = this;
        // 简单粗暴解锁
        me.isLockUp = false;
        me.isLockDown = false;
        // 为了解决DEMO5中tab效果bug,因为滑动到下面,再滑上去点tab,direction=down,所以有bug
        me.direction = 'up';
    };

// 重置
    MyDropLoad.prototype.resetload = function(){
        var me = this;
        if(me.direction == 'down' && me.upInsertDOM){
            me.$domUp.css({'height':'0'}).on('webkitTransitionEnd mozTransitionEnd transitionend',function(){
                me.loading = false;
                me.upInsertDOM = false;
                $(this).remove();
                fnRecoverContentHeight(me);
            });
        }else if(me.direction == 'up'){
            me.loading = false;
            // 如果有数据
            if(me.isData){
                // 加载区修改样式
                me.$domDown.html(me.opts.domDown.domRefresh);
                fnRecoverContentHeight(me);
                fnAutoLoad(me);
            }else{
                // 如果没数据
                me.$domDown.html(me.opts.domDown.domNoData);
            }
        }
    };

当我们调用unlock后,插件的变量direction 为up,可是在resetload中会判断direction的值,根据direction的值设置动画效果。

直接上手改源码,不用判断方向,只要resetload那么下拉动画就会重置。
 

// 重置
    MyDropLoad.prototype.resetload = function(){
        var me = this;
        if (me.upInsertDOM){
            me.$domUp.css({'height':'0'}).on('webkitTransitionEnd mozTransitionEnd transitionend',function(){
                me.loading = false;
                me.upInsertDOM = false;
                $(this).remove();
                fnRecoverContentHeight(me);
            });
        }
        if(me.direction == 'down' && me.upInsertDOM){

        }else if(me.direction == 'up'){
            me.loading = false;
            // 如果有数据
            if(me.isData){
                // 加载区修改样式
                me.$domDown.html(me.opts.domDown.domRefresh);
                fnRecoverContentHeight(me);
                fnAutoLoad(me);
            }else{
                // 如果没数据
                me.$domDown.html(me.opts.domDown.domNoData);
            }
        }
    };

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值