1

我正在编写 createUIdefinition.json ARM 模板。我想动态选择某个参数的值 - 让我们根据 UI 定义模板中提供的 A 和 B 值调用 maintemplate.json 中的 parameterC。现在 B 是可选的,它的存在取决于用户为变量 A 选择的值。所以我编写了如下模板:

        "name": "dropdownA",
        "type": "Microsoft.Common.DropDown",
        "label": "dropdownA",
        "defaultValue": "1.1",
        "constraints": {
            "allowedValues": [
            {
                "label": "1.1",
                "value": "1-1"
            },
            {
                "label": "1.2",
                "value": "1-2"
            },
            {
                "label": "1.3",
                "value": "1-3"
            },

        ]
        },
        "visible": true


        "name": "dropdownB",
        "type": "Microsoft.Common.DropDown",
        "label": "dropdown B",
        "defaultValue": "valueX",
              "toolTip": "Choose value",
              "constraints": {
                "allowedValues": [
                {
                    "label": "valueX",
                    "value": "x"
                  },
                 {
                    "label": "valueY",
                    "value": "y"
                  }
                ]
            },
            "visible": "[contains(createArray('1-1','1-2'), basics('dropdownA'))]"  ### make this element visible only if value of A is in ['1-1','1-2']

但是,我在添加此条件时发现:[contains(createArray('1-1','1-2','1-2'), basics('dropdownA'))] 对于下拉列表 B,Azure UI 一直在等待并且基本上不会进入报价摘要页面,也不会反映我可以调试的任何错误。如果我删除 [contains(createArray('1-1','1-2','1-2'), basics('dropdownA'))] ,它工作正常。

我错过了什么吗?

4

1 回答 1

1

如果 DropDownB 的可见条件设置为:

"visible": "[not(equals('1-3', basics('dropdownA')))]",

只有当 DropDownA 的选定值是1-11-2时,我才能看到 DropDownB 可见,我相信这正是您所期望的。

希望这可以帮助!

这是我经过全面测试的 createUiDefinition 模板,它可以工作。

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json",
  "handler": "Microsoft.Compute.MultiVm",
  "version": "0.1.2-preview",
  "parameters": {
    "basics": [
      {
        "name": "dropdownA",
        "type": "Microsoft.Common.DropDown",
        "label": "dropdownA",
        "defaultValue": "1.1",
        "constraints": {
          "allowedValues": [
            {
              "label": "1.1",
              "value": "1-1"
            },
            {
              "label": "1.2",
              "value": "1-2"
            },
            {
              "label": "1.3",
              "value": "1-3"
            }
          ]
        },
        "visible": true
      },
      {
        "name": "dropdownB",
        "type": "Microsoft.Common.DropDown",
        "label": "dropdown B",
        "defaultValue": "valueX",
        "toolTip": "Choose value",
        "constraints": {
          "allowedValues": [
            {
              "label": "valueX",
              "value": "x"
            },
            {
              "label": "valueY",
              "value": "y"
            }
          ]
        },
        "visible": "[not(equals('1-3', basics('dropdownA')))]"
      }
    ],
    "steps": [],
    "outputs": {}
  }
}

参考:CreateUiDefinition 函数

更新: @bmoore-msft 是对的。

如果您参考上面的参考链接,则不支持createArray()作为 CreateUiDefinition 函数的一部分

于 2018-02-15T13:54:46.033 回答