EasyUI的progress对象close方法报错的彻底解决方案

原创 2015年07月10日 23:58:27

今天发现EasyUI的一个BUG,进度条的关闭会影响其它窗体的操作。代码如下:

function saveCoupon() {
    $.messager.progress();
    $("#fm").form("submit", {
        url: "Coupon/PutOnCoupon",
        onSubmit:function(){
            var isValid = $(this).form('validate');
            if (!isValid) {
                $.messager.progress('close');
            }
            return isValid;
        },
        dataType: "text",
        success: function (result) {
            $.messager.progress('close');
            $("#dlg").dialog("close");               
            $("#couponSupplyGrid").datagrid("reload");
        }
    })
}
当代码顺利保存优惠券数据后,执行success处的代码,按照本意,先关闭进度条,然后关闭对话框,最后重新加载数据表格,但是,当执行完毕$.messager.progress('close')后,后续代码无法正常执行,查看游览器调试窗口,显示如下错误信息:

Uncaught TypeError: Cannot read property 'onClose' of undefined

经过尝试,把 $.messager.progress('close'); 代码放到最后执行,一切OK。

晚上回到家,对 $.messager.progress('close');  执行过程跟踪了一下,发现在在4844行的地方有个BUG,原代码如下:

onClose: function() {
	if (this.timer) {
		clearInterval(this.timer);
	}
	if (_2af.onClose) {
		_2af.onClose.call(this);
	} else {
		$.messager.defaults.onClose.call(this);
	}
}
正是 if (_2af.onClose) 这段条件语句中_2af为undefined时报错了,根据代码的结构,可以猜出作者本意是若_2af对象没有onClose事件,则调用默认的close事件处理函数。因此,可以将此条件语句改为如下:

onClose: function() {
	if (this.timer) {
		clearInterval(this.timer);
	}
    if (_2af && _2af.onClose) {
		_2af.onClose.call(this);
	} else {
		$.messager.defaults.onClose.call(this);
	}
}
经测试,执行 $.messager.progress('close'); 时不再报错了,问题圆满解决。

本人使用的是easyui-1.4.3版本。







版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Jquery easyUI dialog的close和destroy

之前在用easyUI的时候遇到一个问题,一直困扰着我。问题:使用dialog来实现保存和编辑框,使用dialog.(“close”)来关闭dialog框,这个时候如果有两个页面的保存页面的表单的字段相...

Jquery easyUI dialog的close和destroy

之前在用easyUI的时候遇到一个问题,一直困扰着我。 问题: 使用dialog来实现保存和编辑框,使用dialog.(“close”)来关闭dialog框,这个时候如果有两个页面的保存页...

Jquery EasyUI Dialog close和destroy方法

在使用JQuery EasyUI做项目的时候,经常需要使用Dialog实现弹出框效果,但是在“查看日常活动链接”的时候,有两个模块调用的是同一个Dialog页面,这个时候就出现页面混乱情况,要么就是D...

EasyUI的progress对象close方法报错的彻底解决方案,easyuiprogress

今天发现EasyUI的一个BUG,进度条的关闭会影响其它窗体的操作。代码如下: function saveCoupon() { $.messager.progress(); ...

$.messager.progress不显示问题

由于对js内部执行不是特别了解, 出现问题的情况是:执行多个ajax请求,然后在用程序判断多个ajax请求是否都完成,完成则关闭$.messager.progress窗口。但实际情况是$.messa...

解决easyui中重复调用$.messager.progress('close')报错问题

问题描述:把$.messager.progress('close')放在全局ajax函数的complete方法里就可以免去每次调用$.messager.progress(options)后都需要调用一...
  • lf124
  • lf124
  • 2015-10-12 09:37
  • 2827

《UNIX环境高级编程》单个源码编译方法和编译问题彻底解决方案

对于很多初学 《UNIX环境高级编程》(AdvancedProgramming in the UNIX Environment,简称APUE,以下使用简称)的朋友 ,第一个遇到的问题可能就是该书中的源...

主程序调用DLL窗体cannot assign a class to a class问题的彻底解决方案

转自http://topic.csdn.net/u/20091216/14/0906d982-c004-417a-becb-07efdbea81ae.html  经验共享:   主程序调用DLL窗...

DDoS-给行业内一个可能的彻底解决方案--太极盾随笔

看到文章的阅读数一直在增加,还是蛮开心的。 很多人在接触太极盾的时候,都会怀疑,怎么业内不都输认为不可抵御的么?为什么你吹牛说你可以?来,咱都是技术流,你说服我,不然我们公司肯定不买。 鉴...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)