date-picker组件置空失败问题

1.问题描述

需求如下:就诊开始日期不能晚于就诊结束日期,就诊结束日期不能早于就诊开始日期。

实现方案:

  • 给就诊开始日期(@change="begnChange")和结束日期(@change="endChange")分别绑定了两个方法

  • 两个方法

        begnChange(value) {
          const endTime = this.form.getFieldValue('endTime')
          if (endTime !== undefined) {
            if (value > endTime) {
              this.$message.error('开始日期不能晚于结束日期')
              this.form.setFieldsValue({
                begnTime: '',
              })
            }
          }
        },
        endChange(value) {
          debugger
          const begnTime = this.form.getFieldValue('begnTime')
          if (begnTime !== undefined) {
            if (value < begnTime) {
              this.$message.error('结束日期不能早于开始日期')
              this.form.setFieldsValue({
                 endTime: '',
              })
            }
          }
        },
    

问题:页面完成判断之后只会给出error信息,而不会置空data-picker的数据。

2.解决方案

使用$nextTick

  • 将回调延迟到下次 DOM 更新循环之后执行
  • 在修改数据之后立即使用它,然后等待 DOM 更新
    begnChange(value) {
      const endTime = this.form.getFieldValue('endTime')
      if (endTime !== undefined) {
        if (value > endTime) {
          this.$message.error('开始日期不能晚于结束日期')
          this.$nextTick(()=>{
            this.form.setFieldsValue({
              begnTime: '',
            })
          })
        }
      }
    },
    endChange(value) {
      debugger
      const begnTime = this.form.getFieldValue('begnTime')
      if (begnTime !== undefined) {
        if (value < begnTime) {
          this.$message.error('结束日期不能早于结束日期')
          this.$nextTick(function (){
            this.form.setFieldsValue({
              endTime: '',
            })
          })
        }
      }
    },

Vue的dom更新机制 & Vue的nextTick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

364.99°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值