cyt*_*nny 4 javascript forms vue.js antd vuelidate
假设我有一个带有如下数据的 vue 组件:
data: () => ({
form: {
old_password: {
data: '',
type: 'password',
label: 'Old Password',
},
new_password: {
data: '',
type: 'password',
label: 'New Password',
},
repeat_password: {
data: '',
type: 'password',
label: 'New Password Confirmation',
},
},
}),
Run Code Online (Sandbox Code Playgroud)
数据以这种方式格式化,因为我使用另一个插件 ant-design 来构建表单,因此以另一种方式格式化数据不是一种选择。该data
字段将存储实际数据。
然后,我为 vuelidate 设置了以下验证规则。
validations: {
form: {
old_password: {
data: { required },
},
new_password: {
data: { required },
},
repeat_password: {
data: { sameAsPassword: sameAs('new_password') },
},
},
},
Run Code Online (Sandbox Code Playgroud)
该required
规则的作品,但sameAsPassword
规则不能正常工作。它总是返回错误,即使我确定我输入了相同的密码。我想这不是与正确的领域进行比较。如何设置规则以便它与正确的字段进行比较?
new_password
不是 的兄弟姐妹repeat_password.data
。来自内置的验证器文档
- Locator 可以是同级属性名称或函数。当作为函数提供时,它接收验证下的模型作为参数,并将其绑定到组件实例,因此您可以访问其所有属性和方法,即使在嵌套验证的范围内也是如此。
所以一个函数需要传递给sameAs
:
validations: {
form: {
old_password: {
data: { required },
},
new_password: {
data: { required },
},
repeat_password: {
data: {
sameAsPassword: sameAs(function() {
return this.form.new_password.data;
})
},
},
},
},
Run Code Online (Sandbox Code Playgroud)
同时,为了在this
函数内部工作,data
需要将箭头函数改为返回数据。IE
data() {
return {
form: {
old_password: {
data: '',
type: 'password',
label: 'Old Password',
},
new_password: {
data: '',
type: 'password',
label: 'New Password',
},
repeat_password: {
data: '',
type: 'password',
label: 'New Password Confirmation',
},
},
}
},
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7617 次 |
最近记录: |