Vue js vuelidate не может прочитать настраиваемую проверку внутри схемы динамической проверки

введите здесь описание изображения

У меня такой UI. Если пользователь проверит All dates, он установит логическую переменную is_all_dates на true. Это означает, что пользователю не важен диапазон дат, он хочет все данные без фильтрации по диапазону дат.

С другой стороны, если пользователь не проверяет All dates, мне нужно проверить 3 вещи.

  1. Он / она вводит дату начала (обязательно)
  2. Он / она ввел на сегодняшний день (обязательно)
  3. С даты ‹По дате (настраиваемый валидатор)

Для достижения этого требования я использую схему динамической проверки.

Мне нужно только проверить, равно ли All dates false. в противном случае мне вообще не нужны проверки.

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 из undefined

Мой собственный валидатор не распознается внутри функции validations ()

Я могу использовать ключевое слово this вот так. Это синтаксическая ошибка.

to: {
                  required,
                  this.date_greather_than
                }

person Pathum Kalhan    schedule 11.11.2018    source источник
comment
code вы предоставляете весь код, который это содержит?   -  person Boussadjra Brahim    schedule 11.11.2018
comment
@BoussadjraBrahim, что ты имеешь в виду?   -  person Pathum Kalhan    schedule 11.11.2018
comment
код наподобие этого в App.vue в этом примере codeandbox.io/s/w2n99onq78   -  person Boussadjra Brahim    schedule 11.11.2018
comment
@BoussadjraBrahim У меня есть еще одна логическая переменная is_all_dates. Если это is_all_dates == false, то только мне нужно, чтобы это произошло. Проблема возникает, когда я использую оператор if.   -  person Pathum Kalhan    schedule 11.11.2018
comment
не могли бы вы предоставить свой объект данных, часть своего шаблона и подробнее объяснить свой вариант использования, я мог бы предложить лучшее решение для этого   -  person Boussadjra Brahim    schedule 11.11.2018
comment
@BoussadjraBrahim Я обновил свой вопрос.   -  person Pathum Kalhan    schedule 11.11.2018
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Boussadjra Brahim    schedule 11.11.2018
comment
@BoussadjraBrahim Все потому, что я не указал другую часть.   -  person Pathum Kalhan    schedule 15.11.2018


Ответы (1)


Я нашел ответ. Проблема заключалась в том, что я указывал только часть if. Если указать как часть if, так и часть else, мой код работает должным образом.

validations() {
    if (this.is_limit_by_range) {
      return {
        to: { required, date_greather_than },
        from: { required },
        status: { required }
      };
    } else {
      return {
        status: { required }
      };
    }
  }
person Pathum Kalhan    schedule 15.11.2018
comment
я догадался, что +1 - person Boussadjra Brahim; 15.11.2018