现在的位置: 首页 > 综合 > 正文

easyui -datagrid-loadl两次请求?

2018年02月11日 ⁄ 综合 ⁄ 共 895字 ⁄ 字号 评论关闭

今天本来以为发现了一个easyui-datagrid load的bug,因为发现load指定会向服务器发送两次请求,这两次请求一模一样<包括列表查询参数和分页参数等>,查看源码和网上言论说是load方法会
    调用setTimeout函数,总之就是一次指令load一次指令是setTimeout作祟,导致两次请求。。。。。。。。。大半天一直沿着这个思路在想问题;
    可是当真相出现的时候傻眼了,原因是调用
    $.messager.alert('提示','操作成功!','info',function(){
        $('#xxtable').datagrid('load');
    });
    alert方法的回调函数会在回调时候和onBeforeClose执行两次<alert confirm弹出框本质是通过window实现的 之前改过源码将其不可拖动 不然会影响样式,只需修改alert的window定义draggable:false 即可实现>!
   
    改源码:
    _22a[$.messager.defaults.ok] = function() {
        win.window("close");
        /*if (fn) {
            fn();
            return false;
        }*/
    };
    var win = _222(_228, _229, _22a);
    win.window({
        onBeforeClose : function() {
            if (fn) {
                fn();
                return true;
            }
        }
    });
    return win;
    将其自身的调用注掉,只在onBeforeClose 调用一次即可;
   
    总结:虽然不赞同改源码的方式,但是仔细研读发现此微小改动并不会影响其他模块功能,不至于像“蝴蝶效应”那样牵一发动全身,所以应该辩证的看待这个问题,有时候可以通过改源码解决的不影响其ta也是可以的!

抱歉!评论已关闭.