将自定义规则与参数一起使用(vue js-vee validate)

时间:2019-05-13 12:00:08

标签: vuejs2 vee-validate

在寻求帮助之前,我查看了Vee验证的文档,我对使用带参数的自定义规则有疑问。实际上,我的规则配置很好,但是我找不到正确的语法来使它在带有参数的组件中正常工作。 我应该在相关字段的v-validate功能中写些什么?

感谢您的帮助,

这是我的规则:

import { Validator } from 'vee-validate';

Validator.extend('isBigger', (value, [otherValue]) => {
    return value <= otherValue;
}, {
    hasTarget: true
});

我尝试了这个但没有用:

<b-form-input ref="bottom"
    name="sampling depth bottom"
    v-validate="{regex: /^-?\d+[.,]?\d{0,10}$/}"
    placeholder="(in cm)"
    v-model="inputSamplingDepthBot"
    ></b-form-input>

<b-form-input
    name="sampling depth top"
    v-validate="{isBigger:'bottom', regex: /^-?\d+[.,]?\d{0,10}$/}"
    placeholder="(in cm)"
    v-model="inputSamplingDepthTop"
    ></b-form-input>

1 个答案:

答案 0 :(得分:1)

无需将整个东西都用大括号括起来。试试看:

<b-form-input
    name="sampling depth top"
    v-validate="'isBigger:bottom, regex: /^-?\d+[.,]?\d{0,10}$/'"
    placeholder="(in cm)"
    v-model="inputSamplingDepthTop"
    ></b-form-input>

规则名称和参数都应作为字符串传递。

如果出于某种原因需要为参数传递变量,则可以使用反引号对变量进行插值,如下所示:

<b-form-input
    name="sampling depth top"
    v-validate="`isBigger:${someVariable}, regex: /^-?\d+[.,]?\d{0,10}$/`"
    placeholder="(in cm)"
    v-model="inputSamplingDepthTop"
    ></b-form-input>