在 Vuetify 规则定义中传递额外参数

7 vue.js vuetify.js

我的目标是定义我的规则一次,然后将它们重用于我的所有领域。为此,我需要将额外的参数传递给我的规则,例如一个 v-text-field 的 maxlength 为 20,而另一个的 maxlength 为 50。从我所看到的,只有价值被传递了。如何向我的规则添加额外的参数?

<template>
  <v-input :rules=[rules.max(20)] v-model="field1" />
  <v-input :rules=[rules.max(50)] v-model="field2" />
</template>
<script>    
  data() {
    rules: {
      max(v, maxnum) { //maxnum is the parameter I want to add so that I can pass different values and reuse the same rule on multiple fields
        return (v || '').length <= maxnum || 'Max exceeded';
      }
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

Cha*_*nda 15

您需要一个返回规则函数的函数。包装器函数应该接受rules函数不知道的任何额外参数(值以外的任何参数):

<template>
  <v-input :rules=[rules.max(20)] v-model="field1" />
  <v-input :rules=[rules.max(50)] v-model="field2" />
</template>

<script>    
  data() {
    rules: {
      max(maxNum) {
        return v => (v || '').length <= maxNum || 'Max exceeded';
      }
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)