Загрузка параметров поля выбора на основе другого поля выбора с использованием jsonSchema

Я использую jsonschema для создания наших форм и их проверки.

Ниже приведен пример json:

{
  "title": "Microsoft Account Request",
  "readOnly": false,
  "$schema": "http://json-schema.org/draft-04/hyper-schema",
  "description": "Microsoft Azure Account Request Product Specification",
  "properties": {
    "product": {
      "title": "Product",
      "dataBinding": {"references": ["SPEC_ID#/properties/service"]},
      "properties": {
        "offers": {
          "title": "Product Offers",
          "propertyOrder": 1,
          "type": "array",
          "uniqueItems": true,
          "format": "tabs",
          "items": {
            "title":"Product Offer",
            "properties": {
              "category": {
                "title": "Category",
                "readOnly": false,
                "unique":true,
                "strictProperties": true,
                "enum": [
                  "Cloud Services",
                  "Virtual Machines",
                  "Azure App Service",
                  "Batch"


                ],
                "options": {
                    "dependencies": [
                      {"id":"subcategoryAdd", "value":true}
                    ]
                  },
                "description": "Select category",
                "propertyOrder": 1,
                "type": "string"
              },
              "subcategory": {
                  "id":"subcategoryAdd",
                "title": "Sub - Category",
                "readOnly": false,
                "strictProperties": true,
                "description": "Select Sub-Category",
                 "options": {
                    "hide_display": true
                  },
                "enum": [
                  "Build and Deployment",
                  "Application Insights"
                ],
                "propertyOrder": 2,
                "type": "string"
              }
            },
            "type": "object"
          }
        }

      },
      "type": "object"
    }
  },
  "type": "object"
}

И пример вывода:

введите здесь описание изображения

В форме вывода я выделил параметр подкатегории в поле выбора, который должен загружаться на основе выбранной категории.

Например, если я выбираю batch, то параметры подкатегории a, b, c должны отображаться в поле выбора для подкатегории, а если я выбираю Azure app service, то параметры подкатегории d, e, f должны отображаться в поле выбора для подкатегории.

Я пробовал это с dependencies, но тщетно. Кроме того, я попытался сделать это, используя watch и enumSource, как указано здесь

Любая помощь будет стоить.

Спасибо!


person Vinay Prajapati    schedule 29.01.2016    source источник


Ответы (1)


Ваша связь категории/подкатегории может быть проверена с помощью следующей схемы JSON.

{
  "type": "object",
  "anyOf": [
    {
      "properties": {
        "category": { "enum": ["foo"] },
        "subCategory": { "enum": ["asdf", "jkl;"] }
      }
    },
    {
      "properties": {
        "category": { "enum": ["bar"] },
        "subCategory": { "enum": ["asdf", "qwer", "uiop"] }
      }
    }
  ]
}

Однако это не означает, что используемый вами генератор форм сможет создать форму на основе этого. Я был бы впечатлен, если бы это было возможно.

person Jason Desrosiers    schedule 30.01.2016