我尝试创建新表单,其中有几个布尔切换按钮,如果更改,某些按钮将跟随另一个按钮值
我尝试制作一个带有多个开关的表单,例如有2个开关
切换A和B
如果开关 A 为真,则开关 B 将启用,用户可以更改值, 如果开关 A 为 false,则开关 B 将被禁用,并且值将自动更改为 false
我尝试使用“allOf”来完成此任务,但它只能更改禁用/启用开关 这是我尝试过的
{
"type": "object",
"title": "switchMode",
"properties": {
"switchA":{
"type": "boolean",
"title": "Swith A",
"description" : "if switch A is true, switch B will be enable and user can change value, if switch A is false, switch B will be disabled and value will change to false",
"default": true
},
"switchB":{
"type": "boolean",
"title": "Swith B",
"description" : "switch B value and enable/disable is depend on switch A current value",
"default": false
}
},
"allOf": [
{
"if": {
"properties": {
"switchA": {
"type": "boolean",
"const": false
}
}
},
"then": {
"properties": {
"switchB": {
"type": "boolean",
"readOnly": true
}
}
}
}
]
}
我尝试使用几种东西,但它不像在之后添加一些值那样有效
"readOnly": true
与此:
"const": false
、"value": false
、"default": false
和"enum": [ false ]
有没有办法在将
switchB
的值更改为false
后将switchA
的开关值更改为false
?
在我看来,跨属性依赖表明早期决策有些次优。虽然我没有使用 jsonschema(而是使用其他 XML 模式定义),但模式定义的总体思路是保持较高的级别,我在这里概述了这一点:
您要么有场景 a 结构,要么有场景 b 结构,并且在其中一个中该标志是强制性的,而在另一个中则不存在该标志。抵制住诱惑,要求它使用固定值,因为这会让您在以后对模式进行更改时需要进行大量修改。
应该在处理json数据的代码中相应地设置标志的值,在场景a中取给定值,在场景b中无条件地取给定值,最好在一个地方。