是否有嵌套的依赖关系

时间:2019-06-22 17:27:39

标签: jsonschema react-jsonschema-forms

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"
          ]
        }
      ]
    }
  }
}

和以下ui模式:

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

有什么线索,当从复选框中选择“其他”选项时,如何显示“其他测试”问题?

我不知道它是否相关,但是我正在使用json-schema-form包。 https://github.com/mozilla-services/react-jsonschema-form

更新:

靠近一点。现在,当选择“其他”时,将显示文本字段,但同时选择“ Test1”时,该文本字段将再次消失。

{
  "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"
          ]
        }
      ]
    }
  }
}

0 个答案:

没有答案