问题:
在弹出提示框中点击确认按钮,弹出框不消失
分析:
弹出框的处理逻辑是:
1)弹出提示框时,在触发其弹出的控件上绑定一个监听事件,事件的操作内容是关闭当前的提示框,该事件会监听确认按钮发出的事件(event)动作
2)确认按钮被点击时首先会执行弹出框绑定的回调函数,执行完回调函数后。发出一个按钮事件,该事件被第一步的控件所监听
在本例问题中,弹出确认后会刷新table,但是弹出组件本身是由table中的控件(一个图标URL)触发。点击确认按钮后,会先执行回调函数,由于弹出组件的回调函数中对table内的控件进行了刷新,即组件关联的控件也被刷新,造成回调函数执行完毕后,确认按钮发出的时间通知无法被触发,进而弹出框不能被关闭。
解决方案:
在回调函数的首行,增加关闭弹出框的方法,即在刷新table前先关闭弹出框,然后再刷新table。相关代码如下:
出错代码:
success:function(){
rayDialog("操作成功!",function(){
table.ajax.reload();
});
},
修正后代码:
success:function(){
rayDialog("操作成功!",function(){
layer.closeAll('dialog');
table.ajax.reload();
});
},
说明:
在使用弹出框,弹出页面时,如果通过js关闭产生异常,优先考虑其挂在控件是否发生了变化,造成事件监听失效。
最后于 2019-6-3
被lake编辑
,原因: