Возможно ли иметь вложенные зависимости - PullRequest
0 голосов
/ 22 июня 2019

UI

Когда «Да» ответили на вопрос «Тест на интеллект проводился раньше?» флажок «Какой тест?» Показано. Это работает хорошо.

Однако при выборе опции «Другое» я хочу, чтобы отображался вопрос «Другой тест» (который является текстовым полем). Это не работает.

Браузер также показывает мне следующее сообщение:

«игнорирование oneOf в зависимостях, поскольку не существует единственной действительной подсхемы»

Я использую следующую схему Json:

{
  "header": "Personal Information",
  "type": "object",
  "required": [
    "Intelligence test taken before?"
  ],
  "properties": {
    "Intelligence test taken before?": {
      "type": "string",
      "enum": [
        "Yes",
        "No"
      ]
    }
  },

  "dependencies": {
    "Intelligence test taken before?": {
      "oneOf": [
        {
          "properties": {
            "Intelligence test taken before?": {
              "enum": [
                "Yes"
              ]
            },
            "Which Test?": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Test1",
                  "Other"
                ]
              },
              "uniqueItems": true
            }
          },
          "required": [
            "Which Test?"
          ]
        }
      ]
    },
    "Which Test?": {
      "oneOf": [
        {
          "properties": {
            "Which Test?": {
              "enum": [
                "Other"
              ]
            },
            "Other Test": {
              "type": "string"
            }
          },
          "required": [
            "Other Test"
          ]
        }
      ]
    }
  }
}

и следующая схема пользовательского интерфейса:

{
  "Which Test?": {
    "ui:widget": "checkboxes"
  }
}

Любая подсказка, как я могу показать вопрос «Другой тест», когда опция «Другой» выбрана из списка чекбоксов?

Я не знаю, уместно ли это, но я использую пакет json-schema-form. https://github.com/mozilla-services/react-jsonschema-form

Обновление:

Подобрался ближе. При выборе «Другое» текстовое поле теперь будет отображаться, однако при выборе «Тест1» оно снова исчезает.

{
  "header": "Personal Information",
  "type": "object",
  "required": [
    "Intelligence test taken before?"
  ],
  "properties": {
    "Intelligence test taken before?": {
      "type": "string",
      "enum": [
        "Yes",
        "No"
      ]
    }
  },

  "dependencies": {
    "Intelligence test taken before?": {
      "oneOf": [
        {
          "properties": {
            "Intelligence test taken before?": {
              "enum": [
                "Yes"
              ]
            },
            "Which Test?": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "Test1",
                  "Other"
                ]
              },
              "uniqueItems": true
            }
          },
          "required": [
            "Which Test?"
          ]
        }
      ]
    },
    "Which Test?": {
      "oneOf": [
        {
          "properties": {
            "Which Test?": {
              "enum": [
                "Other"
              ]
            },
            "Other Test": {
              "type": "string"
            }
          },
          "required": [
            "Other Test"
          ]
        }
      ]
    }
  }
}
...