上传组件如何重载

提问 已结
13 431
FYDHZ
FYDHZ 2018-5-11
悬赏:20飞吻
版本:layui 浏览器:
上传组件如何重载。类似表格和form重载。
回帖
  • 你是想要根据一些状态来改变已经render过的节点么?需要看下你到底要修改的是什么,目前木有reload之类的好像,想通再次render的话,目前有bug,对同一个dom节点多次调用render之后,点击可以弹出文件选择之类的,但是选中之后的事件丢失了。就是说你文件选择了,它不会触发实际上文件选择之后的回调操作等等,这个先前遇到过解决了,需要改掉源码的bug,改动非常小就能实现。另外更加重要的是你想修改的是什么?如果只是一些比如data这些提交上去的其他参数的话,可以通过其他的方式来动态修改,比如2.2.6之后的data支持方法定义支持传动态值,之前的版本可以在before监听中添加代码逻辑对this.data进行处理,达到动态值的,其他的属性比如你修改文件类型呀之类的估计就得走前面的方法了。
    0 回复
  • render一下就可以了
    0 回复
  • FYDHZ
    2018-5-11
    @岁月小偷 谢谢回复。我在layer弹出层添加upload组件,但是关闭弹出层的时候并不会清空文件上传队列。第二次打开弹出层会额外上传之前选中的文件。然后我试着重新render之后,可以解决上述问题但是上传组件中的choose方法不会调用,图片无法预览。
    点击可以弹出文件选择之类的,但是选中之后的事件丢失了。就是说你文件选择了,它不会触发实际上文件选择之后的回调操作等等,这个先前遇到过解决了,需要改掉源码的bug,改动非常小就能实现
    请问这个具体是怎么解决的?谢谢
    0 回复
  • @FYDHZ 这个是因为upload组件多次渲染同一个dom的一个bug,如图

    里面红色框中的内容原本是在红色箭头之后的,把他们找到并且拿出来,然后给加一个off再on上那些事件,原因是多次渲染的时候控件回去删掉以前建好的文件上传的组件,并新增,但是神奇的是下面发现以前加过事件了就返回,可能是为了提供一些性能的考虑,但是新建出来的组件也放后面这就不应该了。你参考着修改一下然后再试试。
    0 回复
  • @FYDHZ 好像还有一个没拿出来,return以后的第一个拿出来
    0 回复
  • FYDHZ
    2018-5-11
    @岁月小偷 不知道你的upload文档是哪个版本我这个版本作者已经改写。单纯的把红框删掉会出现重复弹框问题
    0 回复
  • 大个
    2018-5-11
    这个问题我没改源码,如果你的上传组件在form中,我直接取form的dom调用reset()方法,之后再次全部render一下即可
    0 回复
  • @FYDHZ 2.2.6的源码应该还没修复的吧下午上班看下新版本的要修改的话建议用源码吧,
    0 回复
  • @FYDHZ 第一次发的图不对,因为工程比较多,可能截图错误了,也不知道你用的版本是什么版本,我下了一个最新版本的,做了测试,看了源码没有修改这一块的bug,然后也写了例子,你下下来换个路径试一下,里面还有一个upload.js是我最新版的源码修改的,你可以先用自己的最好是最新版本的layui测试一下,看看效果是不是多次渲染之后功能就不正常了,然后再把upload.js给备份一下,把我给你的upload.js拷贝进去,然后清一下浏览器缓存再测试一下,看看是不是不管你render一个dom多少次功能都能正常使用,我都试过了没问题,有兴趣可以试一下,如果想要的话然后自己也没有修改upload的话可以将这个文件替代原来的upload使用的,当然没有混淆之类的。社区也有其他人说有其他的办法可以试一下,当然我这个只是修复多次render同一个dom出现的bug跟其他的方法没有什么关联。
    https://pan.baidu.com/s/1yppCj8wlIK6BjtV4avbyOQ
    0 回复
  • FYDHZ
    2018-5-11
    @岁月小偷 按照你的方法修改源码已经解决了

    把这段拿出判断就可以了
    多谢多谢
    0 回复
  • @FYDHZ 嗯嗯,有问题的亲,需要off一下,然后再on,还有一个问题就是下面那个bindAction.on的可能也要拿出去,不然到时候按钮点击上传有可能会出现状况,当然这个需要测试,不过即使拿出去了也坑定没错,只要记得off一下然后再on,不然直接用可能会造成多次绑定上传多次的可能,当然是不是会这个也得测试哈,感觉好像不会,不过稳妥起见还是给加上吧[嘻嘻]
    0 回复
  • FYDHZ
    2018-5-11
    @岁月小偷 好的,终于改好交出去了,多谢大神[哈哈]
    0 回复
  • @FYDHZ 嗯嗯不客气。[嘻嘻]
    0 回复