SchemaForm数组有条件

时间:2018-04-30 19:36:14

标签: angularjs angular-schema-form

背景

我正在使用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"
          }
        }
      }
   }
  }
}

FORM

[
  {
    "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

问题

正如我所看到的,我现在拥有的代码可以生成所有项目&#39;辅助属性(pathmethod)取决于数组commandType中的第一项(在[0]处),但我希望它依赖于{{1相应的项目。因此,如果第一项具有commandType REST,则它提供commandType字段,如果第二项具有SSH命令类型,则它提供method字段,依此类推。

1 个答案:

答案 0 :(得分:0)

我找到了答案。

[0]替换为[arrayIndex]

我从这里找到了它:https://github.com/json-schema-form/angular-schema-form/commit/21f6d3ab64435b032456dfe19e03f96b29366320