今天在使用layui中自带的文件上传组件layui.upload的时候,遇到了一个问题,就是当我在关闭弹出层之后,父页面中的layui.upload事件就无法监听,网上找了好久,最后发现了layui中关于upload中的一个问题:当layui.upload被重复渲染之后,就会无效。基于这个原理,如果layui.upload事件在选择图片之后没有进行回调,没有触发事件,可以去看一下是不是将layui.upload重复渲染了。下面给大家说一下我的案例,可以参考一下。
场景:在父页面A中,打开弹出层B,在B中进行一系列操作之后,关闭B页面,刷新A页面,与此同时,刷新了A页面的一系列监听事件,这个地方划重点。注意,我在A页面加载的时候就渲染了一遍layui.upload事件,之后在B页面关闭的时候又渲染了一遍,这就造成了layui.upload的重复渲染,所以就导致了我在先打开B页面,再上传文件时,上传无法得到回调。在没有打开B页面的情况下就不会出现这种问题。
解决方法:既然知道了原因时重复渲染导致,那么解决方法当然是阻止这种现象的发生,把upload事件单独拎出来,使其只在页面加载时渲染一次,就是这么easy,至于怎么拎出来,那就看实际场景,由各位大神自己去思考了。