Как проверить динамическое поле ввода в vue.js? - PullRequest
1 голос
/ 06 ноября 2019

Я использую vuelidate для проверки поля ввода, поле ввода является динамическим, т. Е. Значение в поле ввода динамически заполняется jsonData с использованием v-model

Что я пытаюсь сделатьdo is

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

что я делаю: - мой вводполе

    <div v-for="data in displayProfileData" :key="data.email" >
     <p>{{data}}</p>
   <div class="row">
       <div class="form-group col-xs-6 col-sm-6 col-md-6 col-lg-3">
                        <label for="phoneNo">Name</label>
              <input v-model="data.businessname"
              @blur="$v.form.name.$touch()"
              type="text" 
                            class="form-control" name="name"
                            id="name">
             <div v-if="$v.form.name.$error" class="form-error">
               <span v-if="!$v.form.name.required" class="text-danger">nameis required</span>
             </div>
                    </div>
          <p>{{$v}}</p>
   </div>
     </div>

Я показываю $v в пользовательском интерфейсе для проверки, но при вводе в поле ввода никаких изменений не обнаружено

Мой код сценария: -

    <script>
import { required,minLength } from 'vuelidate/lib/validators'
import axios from '../../services/base-api'
export default {
    data (){
      return{
          form :{
        name:''
          },
           displayProfileData:[]
      }
  },
  validations: {
    form: {
      name:{required}, 
    }
  },
  created(){
        this.userId = localStorage.getItem('user-Id')
        axios().post('/api/v1/Profile/getProfileData',this.userId)
        .then(res=>{
                console.log(res.data)
                this.displayProfileData=res.data

})
.catch(err=>{
    this.$toasted.error(err,{duration:2000})
})

}
}
</script>

Мои данные с сервера имеют следующий формат: { "businessid": "8126815643", "businessname": "manish",}

Выпуск Первоначально при загрузке страницы в поле ввода отображается manish, поэтому, когда я изменяю ее на что-то другое и выделяюэто показывает ошибку, что name is required Я не понимаю, что происходит

2 : Динамическая форма - проверьте здесь

пожалуйста, проверьте это enter image description here

1 Ответ

1 голос
/ 06 ноября 2019

В соответствии с документацией vuelidate вы должны внести следующие изменения:

<div v-for="data in $v.displayProfileData.$each.$iter" :key="data.email">
  ...
  <input  v-model="data.businessname.$model"
          @blur="data.businessname.$touch()"
          type="text"
          class="form-control"
          name="name"
          id="name"
  >
  <div v-if="data.businessname.$error" class="form-error">
     <span v-if="!data.businessname.required" class="text-danger">name is required</span>
  </div>
...
</div>
 validations: {
    displayProfileData: {
      //required,
      //minLength: minLength(1),
      $each: {
        businessname: { required }
      }
    }
 }

Прикрепите мой пример кода и коробки ссылка

...