关于ajax执行后刷新done

提问 已结
14 564
JiaN931
JiaN931 2018-5-15
悬赏:20飞吻
版本:layui 浏览器:
表格某行属性为:1=公开(红色);2=私有(蓝色)
通过ajax去操作这个事件,执行完之后执行了form.render();
但是发现并没有去执行done这一部分,想问下,有什么办法可以去执行这一部分么;
或者有什么办法可以执行ajax之后,把“公开(红色)“,刷新成“私有(蓝色)”
ps:不要说什么在数据库查出来直接用case when这种方式来展示出,1=公开;2=私有。颜色问题也一样无法解决
回帖
  • 首先这一块感觉可以在table字段设置的templet中来处理,不需要在done回调中再做处理,其次done的这个回调一般有几个坑需要注意:1,url的话只有在返回正常的时候才会去做处理,错误的话表格渲染完成之后不会去调用done,但是这个跟你的不太符合,2,如果表格中有排序的需要特别注意,要看一下自己加了排序的监听没有,排序监听一般实现就是table.reload如果不写监听,只不过是当前页面的排序,而且不会走done也就是说排序之后以前在done里面再做处理的逻辑都不会被调用。检查下是不是这些或者把代码贴出来看看。
    0 回复
  • JiaN931
    2018-5-15
    @岁月小偷 我想请问form到底是个什么东西,因为我看到我这边table都没有在form里面,那么他刷新到底刷新的是个什么东西
    0 回复
  • 刷新其实就是重新渲染一次表格,然后带着一些参数还有初始化的参数,剩下的跟初始化没什么区别。如果是url就发ajax。
    0 回复
  • JiaN931
    2018-5-15
    @岁月小偷 如果一个页面有多个form呢?那么是不是每个form都会刷新?
    0 回复
  • @JiaN931 ?怎么有点不理解你的问题了哈,form.render跟table更新没太大关系,form.render的作用是更新一些组件,可以带类型还有表单的filter
    0 回复
  • JiaN931
    2018-5-16
    @岁月小偷 那么我想请问下,layui有没有局部刷新的方法呢?我只修改了某个单元格,我并不想整个页面重新加载一次。
    0 回复
  • 表格的单元格吗?目前只有一个支持的好像就是table的工具条监听,它返回的参数中带了一个update还有del的方法,其他的没有额,所以怎么说呢,要用它的这个update是需要在特定的环境下的,比如进入了工具条监听(点击一个工具按钮之类的,当然可能有更加古怪的方式,我刚刚有个想法,我自己验证下成了再发测试代码给你)。也可以不走表格自带的,自己写table.update函数,主要思路还要处理的关键问题在于更新表格的cache还有更新dom,更新dom需要注意一点就是如果该列使用了模板引擎,需要经过模板引擎处理一下变成实际显示的值,(其实table组件中的update的逻辑也差不多就是这些)
    0 回复
  • JiaN931
    2018-5-16
    @岁月小偷 好的,谢谢,我先去看看这个工具条监听,因为我这边表格中有大量的直接操作单元格的,就点击之后把“是”改为“否”,“公开”改为“私有”,这种类似的功能,但是我又不想修改一个单元格就整个页面全部重新加载一遍,(譬如使用location.reload()这种重新加载整个页面的方法)那样很影响用户体验,我就只是想,改了之后不要整个页面都加载一遍
    0 回复
  • @JiaN931 你这个问题的话其实估计很好解决,因为是操作表格中的开关之类的,你可以加一个监听,监听开关的开与关,然后把值设置到对应的表格的cache就可以了,不需要刷新表格页面之类的,当然如果你想要同步修改到数据库,那就得在开关的监听中发交易到后台把开关信息保存到数据库中。
    0 回复
  • JiaN931
    2018-5-16
    @岁月小偷 额,我现在是点击某个单元格,先去修改数据库,然后想通过回调重新加载一下这个数据。之前用的jqgrid或者bootstrap,都是使用类似的方式。你说的这个缓存这个,我看到有个api中有个开关的demo,但是感觉不是我想要的,或者说我认为,如果页面对于这个开关操作太频繁,那么后台数据库操作会不会出现数据不同步的情况
    0 回复
  • @JiaN931 应该会有这个可能性,就是不断的开关开关,这个就看怎么处理了,也可以设定开关只修改表格的缓存,然后某个时间点再做批量的保存之类的,看下有什么更好的方式同步到数据库了,单纯的页面操作是比较简单的,涉及到跟后台交互就要考虑能否同步的问题了
    0 回复
  • JiaN931
    2018-5-16
    @岁月小偷 嗯,非常谢谢你的指导。这种烦人的事情让组长去头疼吧,我已经不想去纠结了[抓狂]
    0 回复
  • JiaN931
    2018-5-16
    @岁月小偷 哇,说好的不去纠结这个问题,然后突然在社区翻帖子找到我想要的解决方法,真的是很幸运。貌似可以通过重载当前页面实现刷新。就不会整个页面刷新,只会加载表格这块;$(".layui-laypage-btn)[0].click();这个方法
    0 回复
  • @JiaN931 [嘻嘻] 程序员多多少少都有点强迫症,不会轻易放弃的哈。以前写的一个表格中switch,有兴趣的话可以下下来看看有没有参考价值。 https://pan.baidu.com/s/1pLpVVjlAh-bf-rXIU0j0JQ
    0 回复