为什么在vuelidate中使用sameAs时不起作用?

Jay*_*Han 11 vue.js vuejs2 vuelidate

未找到可验证 SameAs 方法的 fieldName。

\n\n

与(blabla)相同

\n\n

blabla = \'internalFormData.password\', \'internalFormData.password.value\', \'this.internalFormData.password\', \'this.internalFormData.password.value\', \'password\', \' this.password\', \'密码.value\'

\n\n
-----------script----------\ndata () {\n  return {\n     internalFormData: {\n        password: \'\',\n        repassword: \'\'\n      }\n   }\n},\n\n\nvalidations: {\n      password: {\n        value: {\n          required,\n          minLength: minLength(8)\n        }\n      },\n      repassword: {\n        value: {\n          required,\n          minLength: minLength(8),\n          sameAs: sameAs(\'internalFormData.password\')\n        }\n      }\n    }\n  },\n\n\n\n---------------template--------------\n<error\n   v-if="!$v.internalFormData.repassword.value.sameAs"\n>\n  \xeb\xb9\x84\xeb\xb0\x80\xeb\xb2\x88\xed\x98\xb8\xea\xb0\x80 \xec\x9d\xbc\xec\xb9\x98\xed\x95\x98\xec\xa7\x80 \xec\x95\x8a\xec\x8a\xb5\xeb\x8b\x88\xeb\x8b\xa4.\n<error>\n
Run Code Online (Sandbox Code Playgroud)\n\n

错误不会消失。

\n

ked*_*iko 13

使用组合 api的简单示例:

import { useVuelidate } from '@vuelidate/core'
import { email, required, sameAs } from '@vuelidate/validators'

const form = {
    email: '',
    confirm_email: '',
}
const rules = {
    email: { required, email },
    confirm_email: { required, sameAs(computed(()=> form.email))) },
}
const v$ = useVuelidate(rules, form)
Run Code Online (Sandbox Code Playgroud)


Sty*_*tyx 5

您的validations结构应该镜像 中的对象data,因此它应该是:

validations: {
  internalFormData: {
    password: {
      required,
      minLength: minLength(8)
    },
    repassword: {
      required,
      minLength: minLength(8),
      sameAs: sameAs('internalFormData.password')
    }
  }
}
Run Code Online (Sandbox Code Playgroud)