date-picker组件置空失败问题

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于date-picker组件置空失败问题的主要内容,如果未能解决你的问题,请参考以下文章

将属性默认值注入 3rd 方 Vue 组件

element-ui date-picker无法通过value绑值的取巧解决方案

js数组置空的其他方式及使用场景

element date-picker默认值问题

CSS更改Element的date-picker样式

CSS更改Element的date-picker样式