soupirerdedame 发表于 2021-3-30 09:30

[javascript] layui时间选择器laydate重新渲染问题

问题:初次渲染laydate时,根据mark属性值markObj在日期上做标记;但是当mark的属性值markObj变化,重新渲染laydate时,新的日期标记并未生效。初次渲染:
laydate.render({
                        elem: '#date-range'
                        ,eventElem: '.calendar-icon'
                        ,trigger: 'click'
                        ,type: 'date'
                        ,range: '至'
                        ,format: 'yyyy-MM-dd'
                        , mark: markObj
                        ,done: function (value) {
                            startTime = value.split(" 至 ");
                            endTime = value.split(" 至 ");
                        }

                  });

markObj变化后,再次渲染:
laydate.render({
                            elem: '#date-range'
                            ,eventElem: '.calendar-icon'
                            ,trigger: 'click'
                            ,type: 'date'
                            ,range: '至'
                            ,format: 'yyyy-MM-dd'
                            , mark: markObj
                            ,done: function (value) {
                              startTime = value.split(" 至 ");
                              endTime = value.split(" 至 ");
                            }
                        });
思考:
laydate渲染后所附带的lay-index会被载入缓存,所以再次laydate.render时,只是修改lay-index标识的值,而不会重新去渲染


解决方法:
在重新渲染前,remove掉整个laydate的div块容器;然后再append一个laydate的div块容器,最后再使用laydate.render重新渲染。
ps.如果发现laydate样式不一样了,可以再检查中调好样式,再将对应的css代码写在<style>中加上!important.
虽然方法很愚蠢,但是奏效了。

TanHaoHao 发表于 2021-3-30 14:12

一看时间选择器 我直呼好家伙 时间都可以选择了这不是时光机?
页: [1]
查看完整版本: [javascript] layui时间选择器laydate重新渲染问题