С VeeValidate, как я могу увидеть, если поле было затронуто и является ли оно действительным? - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь получить доступ к флажкам проверки из вычисленного реквизита:

computed: {
  isFormValid() {
    let isValid = this.$validator.fields.some(field => {
      console.log(field.flags);
      return field.flags.touched; || field.flags.invalid;
    });
    console.log("isValid", isValid);
    return isValid;
  }
},

Но это выдает ошибку: "TypeError: this.$validator.fields.some is not a function"

Итак, я решил, что перебрал быobservable:

let isValid = Array.from(this.$validator.fields).some(field => {
  console.log(field.flags);
  return field.flags.touched; //|| field.flags.invalid;
});

Ууу! Прогресс! Нет больше ошибок. Но он не пересчитывается, когда я изменяю входные значения формы.

Так как я могу это сделать?

1 Ответ

2 голосов
/ 07 октября 2019

Документы v2 показывают пример , который повторяет this.fields (вместо this.$validator.fields) через Object.keys:

// MyComponent.vue
export default {
  // ...
  computed: {
    isFormDirty() {
      return Object.keys(this.fields).some(key => this.fields[key].dirty);
    }
  },
  //...
}

Используя этот примерваш вычисленный реквизит будет:

// MyComponent.vue
export default {
  // ...
  computed: {
    isFormTouchedOrInvalid() {
      return Object.keys(this.fields).some(key => this.fields[key].touched || this.fields[key].invalid);
    }
  },
  //...
}

v2 demo

В v3 вы можете использовать компонент <ValidationProvider> для легкого доступафлажки проверки в шаблоне:


  touched:{{touched}} invalid:{{invalid}}

v3 demo

...