vue中如何设置条件规则和必填字段?

use*_*413 7 javascript vue.js vuetify.js

我正在尝试将几个字段设置为有条件必填。但我无法让它发挥作用。我已经设置了一个数据字段notRequired: false,并基于此我在字段中使用它以:required="!notRequired"使这些字段成为不需要的,因为在某些情况下我需要根据需要使用这些字段,而在某些情况下我不需要,因为我试图设置那是有条件的。问题是由于添加到字段中的规则,错误消息仍然出现。有没有办法让规则也有条件?

<template>
 <v-text-field
  label='Agency Name'
  v-model='agency.name'
  :rules='nameRules'
  :required="!notRequired"
  required>
 </v-text-field>
 <v-text-field
  label='Agency Code'
  :rules='codeRules'
  :required="!notRequired"
  v-model='agency.code'>
 </v-text-field>
 <v-text-field
  label='Agency location'
  :rules='locationRules'
  :required="notRequired"
  v-model='agency.location'>
 </v-text-field>
</template>

<script>
 export default {
  data: function () {
    return {
      notRequired: false,
      agency: {
        name: '',
        code: '',
        location: '',
      }
      nameRules: [
        value => !!value || 'Please enter name'
      ],
      codeRules: [
        value => !!value || 'Please enter code'
      ],
      locationRules: [
        value => !!value || 'Please enter location'
      ],
    }
  }
 }
</script>
Run Code Online (Sandbox Code Playgroud)

AJT*_*T82 9

您可以使用三元运算符有条件地添加规则,具体取决于 的值notRequired

 <v-text-field
   label="Agency Name"
   v-model="agency.name"
   :rules="notRequired ? 'nameRules' : []" <!-- HERE -->
   :required="!notRequired">
 </v-text-field>
Run Code Online (Sandbox Code Playgroud)