json - JSON 模式 - 基于另一个下拉菜单在下拉菜单中显示值
问题描述
我已经定义了JSON Schema,我正在使用JSON Editor呈现一个具有两个下拉列表(品牌和设备)的表单,预期的表单如下所示:
品牌下拉列表包含 3 个值:
- 苹果
- 谷歌
- 戴尔
同样,设备下拉列表也包含 3 个值:
- 笔记本电脑
- 药片
- 电话
但是,在设备下拉列表中呈现值是有条件的,条件如下:
- 如果设备是戴尔,那么只需将笔记本电脑和平板电脑显示为设备
- 否则显示所有可用的设备
我使用了 JSON 模式草案 7 的If then和else来实现预期的结果,到目前为止我的解决方案如下所示(这是交互式 JSON Schema 游乐场的链接):
{
"required": [
"brands",
"devices"
],
"properties": {
"brands": {
"$ref": "#/definitions/brands"
}
},
"definitions":{
"brands": {
"title": "Brands",
"type": "string",
"enum": [
"Apple",
"Google",
"Dell"
],
"default": "Apple"
},
"all_devices": {
"type": "string",
"enum": [
"Laptop",
"Tablet",
"Phone"
]
},
"dell_devices": {
"type": "string",
"enum": [
"Laptop",
"Tablet"
]
}
},
"if": {
"properties": {
"brands": {
"const" : "Dell"
},
"required": [
"devices"
]
},
"then": {
"properties": {
"devices": {
"$ref": "#/definitions/dell_devices"
}
},
"required": [
"devices"
]
},
"else":{
"properties": {
"devices": {
"$ref": "#/definitions/all_devices"
}
},
"required": [
"devices"
]
}
}
}
但是,第二个下拉菜单(Devices)根本没有显示,我不确定如何调试这个问题,因为我是 JSON 模式的新手。
如果有人能引导我走向正确的方向,或者建议任何其他方法来实现我想要的结果,我真的很感激。
非常感谢!
解决方案
推荐阅读
- javascript - const errorDetails = { message: err.message, status: err.status, stackHighlighted: err.stack.replace(/[a-z_-\d]+.js:\d+:\d+/gi, '$&') };
- hyperledger-fabric - 在 fabric-samples 中使用 couchdb 选项时,无法在 Hyperledger Fabric 1.3 中实例化链代码
- ios - 运行命令 shell 脚本 [cp] embed pods framework' 0.2 seconds Command PhaseScriptExecution failed with a nonzero exit code
- jasper-reports - 应用条件格式时子报表周围出现不需要的边框
- python - POST 请求方法在 Django Rest 框架中不起作用
- node.js - 如何使用带有 mocha 的 await 和 ESM 获取 selenium 驱动程序?
- java - 使用表达式委托而不是 Java 类有什么好处?
- dart - 在 Flutter 中定义 const 级别的类
- angular - ngIf 单行 if 语句 | 角 6
- ole - 从 SQL Server 2017 调用 Web 服务 - sp_OAMethod - 无法建立与服务器的连接