在 Azure ARM 模板中使用 contains 和 createArray
using contains and createArray in Azure ARM templates
我正在编写 createUIdefinition.json ARM 模板。我想动态 select 某些参数的值 - 让我们根据 UI 定义模板中提供的 A 和 B 值调用 maintemplate.json 中的参数 C。现在 B 是可选的,它的存在取决于用户为变量 A 编辑的值 select。所以我写了如下模板:
"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'))] for下拉列表 B,Azure UI 继续等待,基本上不会转到报价摘要页面,也不会反映任何我可以调试的错误。如果我删除 [contains(createArray('1-1','1-2','1-2'), basics('dropdownA'))] ,它工作正常。
我是不是漏掉了什么?
如果DropDownB的可见条件设置为:
"visible": "[not(equals('1-3', basics('dropdownA')))]"
,
只有当 DropDownA 的选定值为 1-1 或 1-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 functions
更新:
@bmoore-msft 是对的。
如果您参考上面的参考 link,createArray() 不支持作为 CreateUiDefinition 函数的一部分
我正在编写 createUIdefinition.json ARM 模板。我想动态 select 某些参数的值 - 让我们根据 UI 定义模板中提供的 A 和 B 值调用 maintemplate.json 中的参数 C。现在 B 是可选的,它的存在取决于用户为变量 A 编辑的值 select。所以我写了如下模板:
"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'))] for下拉列表 B,Azure UI 继续等待,基本上不会转到报价摘要页面,也不会反映任何我可以调试的错误。如果我删除 [contains(createArray('1-1','1-2','1-2'), basics('dropdownA'))] ,它工作正常。
我是不是漏掉了什么?
如果DropDownB的可见条件设置为:
"visible": "[not(equals('1-3', basics('dropdownA')))]"
,
只有当 DropDownA 的选定值为 1-1 或 1-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 functions
更新: @bmoore-msft 是对的。
如果您参考上面的参考 link,createArray() 不支持作为 CreateUiDefinition 函数的一部分