我目前正在构建一个web工具,它允许用户以字符串的形式生成一个选项包。要选择他想要的选项,他需要使用一个具有不同输入(单选,复选框)的表单,该表单由当前保存所有可用选项及其代码的dictionary.json
生成,格式如下(可能会更改):
[
{
"id": 0001,
"title":"foo",
"type":"radio",
"options":[
{
"bar":"",
"foo":"489",
"foobar":"489+490"
}
]
},
{
"id": 0002,
"title":"something",
"type":"check",
"options":[
{
"everything":"M016",
"evenmore":"M139"
}
]
},
[...]
如您所见,它基本上是一个小型数据库。问题是这些选项相互依赖,因此如果
foo
是foobar
则可能确定something
绝对是evenmore
且不能更改为everything
。如何在dictionary.json
中映射这些依赖项,以便生成的表单能够可靠地灰显由其他选项确定的选项?该结构必须是灵活的,因此可以插入新的依赖关系,并将可靠地生成新的形式或验证现有的输出对它们。也可能存在依赖于多个其他选项的选项。我想不出一个聪明的方法来保存这些依赖项,我想知道json是否是这里使用的正确格式。
任何提示或想法都是受欢迎的。谢谢!
最佳答案
您可以尝试将每个选项保存为一个对象,该对象存储如果选中该选项将被排除的所有选项。
因此您的json可以如下所示:
[
{
"id": 0001,
"title":"foo",
"type":"radio",
"options":[
{
"bar":"",
"excludes": []
},
{
"foo":"489",
"excludes": []
},
{
"foobar":"489+490",
"excludes": [
{
"id": 0002,
"options": [
"everything"
],
},
{
"id": 0003,
"options": [
"apple",
"cherry"
],
},
]
}
]
},
{
"id": 0002,
"title":"something",
"type":"check",
"options":[
{
"everything":"M016",
"excludes": []
},
{
"evenmore":"M139",
"excludes": []
}
]
},
[...]
每次选择一个选项时,您都必须检查它们的排除列表,并禁用特定字段的所有这些选项。
要提高可用性,您可以检查一个字段只剩下一个选项,选择此选项,然后禁用整个字段。
编辑:
此外,您还可以将
isExcludedBy
字段保存到每个选项。everything
的id 0002
选项将如下所示:"isExcludedBy": [
"id": 0001,
"options": [
"foobar"
]
]
这可能有点多余,但取决于您希望ui显示的内容,它可以为您节省一些计算时间。
关于javascript - JSON结构中的 map 依赖项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55745050/