VeeValidate全局使用自定义规则

时间:2019-12-18 21:26:46

标签: vue.js vee-validate

我有一个自定义veevalidate规则,可用来查看输入的值是否已经在该组件的数组中。我想在具有不同数组的不同组件中使用此规则。有没有办法做到这一点?这是我目前仅使用一个组件的规则

const isUnique = (value) => {
      const reg = new RegExp(`^${value}$`, 'i');
      const inputValue = this.myArray.filter(str => reg.test(str));

      if (inputValue.length > 0) {
        return {
          valid: false,
          data: {
            message: `The ${inputValue}  already exists.`,
          },
        };
      }
      return { valid: true };
    };

    Validator.extend('unique', {
      validate: isUnique,
      getMessage: (field, params, data) => data.message,
    });

1 个答案:

答案 0 :(得分:0)

您肯定可以-您可以使用记录在here中的名为oneOf的现有规则,也可以更改规则以接受参数。看来您的规则不区分大小写,所以您可能要坚持这一点。您需要做的就是在isUnique函数中接受第二个参数,然后使用它代替this.myArray

const isUnique = (value, values) => {
      const reg = new RegExp(`^${value}$`, 'i');
      const inputValue = values.filter(str => reg.test(str));

然后在您的模板中,将其命名为:

<ValidationProvider :rules="{isUnique:myArray}">