Фон
Я делаю форму, используя http://schemaform.io/
Настройка
Я пытаюсь создать массив объектов, которые пользователь может создать с помощью формы. Таким образом, пользователь может добавить в массив столько элементов, сколько он хочет.
Массив элементов содержит тип, а затем другое поле в зависимости от типа.
Если пользователь нажимает REST, я хочу, чтобы он предложил поле с именем method
.
Если пользователь нажимает SSH, я хочу, чтобы он предложил поле с именем path
.
Код пока
SCHEMA
{
"type": "object",
"title": "Command Asset",
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"commands": {
"type": "array",
"title": "Actions",
"items": {
"type": "object",
"properties": {
"commandType": {
"title": "Command Type",
"type": "string",
"enum": [
"REST",
"SSH"
]
},
"path": {
"title": "Path",
"type": "string"
},
"method": {
"title": "Method",
"type": "string"
}
}
}
}
}
}
ФОРМА
[
{
"type": "help",
"helpvalue": "<h5>Command</h5>"
},
"name",
{
"title":"Command",
"key": "commands",
"items": [
"commands[].commandType",
{
"type": "conditional",
"condition": "modelData.commands[0].commandType=='SSH'",
"items": [
{
"key": "commands[].path"
}
]
},
{
"type": "conditional",
"condition": "modelData.commands[0].commandType=='REST'",
"items": [
{
"key": "commands[].method"
}
]
}
]
}
]
Этот код можно проверить здесь: http://schemaform.io/examples/bootstrap-example.html
Вопрос
Как видно, код, который у меня есть, теперь устанавливает все вторичные свойства элементов (path
или method
) в зависимости от первого элемента в массиве commandType
(в [0]), но я хочу это зависит от commandType
соответствующего элемента. Таким образом, если элемент один имеет commandType
REST, он предлагает поле method
, а если элемент два имеет тип команды SSH, он предлагает поле path
и т. Д.