1

在此处输入图像描述

我有这个用户界面。如果用户检查All dates它会将布尔变量设置is_all_datestrue.So 这意味着用户不关心日期范围,他/她想要所有数据而不按日期范围过滤。

另一方面,如果用户不检查All dates我需要验证 3 件事。

  1. 他/她输入起始日期(必填
  2. 他/她输入一个日期(必需
  3. 从日期 < 到日期(自定义验证器

为了达到这个要求,我使用动态验证模式。

我只需要验证是否All dates等于假。否则我根本不需要验证。

validations() {
        if (!this.is_all_dates) {
          return {
            from: {
              required
            },
            to: {
              required,
              date_greather_than
            }
          };
        }
      },

我这样声明我的date_greather_than验证。

<script>
    const date_greather_than = (value, vm) => {
      let from = new Date(vm.from);
      let to = new Date(value);
      return from < to;
    };
    export defaults:{
        validations(){},
        data(){return{}}
    }
</script>

但问题是我有一个错误

TypeError:无法读取未定义的属性“date_greather_than”

我的自定义验证器在 validations() 函数中无法识别

我可以使用这样的关键字this。这是语法错误。

to: {
                  required,
                  this.date_greather_than
                }
4

1 回答 1

2

我找到了答案。这里的问题是我只指定了 if 部分。通过同时指定 if 部分和 else 部分,我的代码按预期工作。

validations() {
    if (this.is_limit_by_range) {
      return {
        to: { required, date_greather_than },
        from: { required },
        status: { required }
      };
    } else {
      return {
        status: { required }
      };
    }
  }
于 2018-11-15T17:55:48.517 回答