问题描述
使用 vee-validate,Vuejs 的验证库,支持响应式验证模式,我正在考虑在动态字段上添加验证。
我要存档的内容
我得到了一个要验证的动态字段列表。每个字段都包含有关输入类型(字符串、布尔值、整数等)以及是否需要的信息。
示例:
computed: {
schema () {
let schema = Yup.object ({
category: Yup.object ().shape ({
name: Yup.string ().max (255).required ()
})
});
this.fields.forEach((field)=>{
console.log(field);
})
return schema;
},},
在 forEach
循环内部,您可以看到我正在记录该字段。结果是:
Proxy {id: 1,name: "example_integer",placeholder: "",type: "integer",required: true,value: null}
Proxy {id: 2,name: "example_string",placeholder: "Type something",type: "string",required: false,value: null}
对于这个例子,架构应该通过两个规则进行扩展:
example_integer: Yup.number().required(),example_string: Yup.string().nullable()
现在我想知道更喜欢哪种方式:
我很想知道您喜欢哪种方式。如果您有关于如何最优雅地执行此操作的信息,我很乐意听到。
我的第一次尝试:
return Yup.object ({
category: Yup.object ().shape ({
name: Yup.string ().max (255).required (),fields: Yup.array ().of (
Yup.object ().shape ({
value: Yup.lazy (val => {
console.log (val);
return Yup.string ();
})
),})
});
但不幸的是,console.log (val);
只返回该对象的 value
,但在这种情况下,我需要检查 type
和 required
道具。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)