Adaptive Cards如何实现选中Hire选项时显示对应ChoiceSet元素
实现方案
推荐方案:用$when属性直接绑定表单输入值
你之前使用「Only show when」属性时绑定测试数据是使用路径错误,不需要绑定外部测试数据,直接用自适应卡内置的表达式引用同表单内的输入控件值即可,配置逻辑如下:
给id为Suggestion的ChoiceSet元素新增$when属性,属性值直接引用Decision的实时输入值:
{ "type": "Input.ChoiceSet", "id": "Suggestion", "label": "后续讨论建议", // 保留你原有配置的choices、isMultiSelect、样式等其他属性 "$when": "${Decision.value == 'Hire'}" }
这个表达式会自动监听Decision控件的输入值,当选中值等于Hire时自动渲染当前控件,否则隐藏,不需要额外配置动作,是最简单的实现方式。
可选方案:通过ToggleVisibility动作触发显隐
如果你要走动作控制的路径,需要给Decision控件添加onChange事件监听,选中值变化时触发显隐切换,配置示例:
{ "type": "Input.ChoiceSet", "id": "Decision", "label": "招聘决策", "choices": [ // 保留你原有选项配置,其中录用选项的value必须等于判断值Hire {"title": "录用", "value": "Hire"}, {"title": "不录用", "value": "Reject"} ], "onChange": [ { "type": "Action.ToggleVisibility", "targetElements": [ { "elementId": "Suggestion", "isVisible": "${Decision.value == 'Hire'}" } ] } ] }
使用该方案需要提前取消Suggestion控件的「Initially Visible」默认勾选,设置初始状态为隐藏。
注意事项
- 确保两个控件的
id拼写和你实际配置完全一致,表达式里的Hire要和Decision控件中对应选项的value完全匹配,大小写敏感 - Power Automate中需要使用「发布适应性卡片并等待响应」动作发送卡片,Teams客户端对1.2及以上版本的自适应卡完全支持上述两种语法,普通静态卡片推送动作不支持实时交互逻辑
- 如果在Adaptive Card Designer中测试不生效,可以清空示例测试数据,避免测试数据覆盖实时输入值
内容的提问来源于stack exchange,提问作者Juan Puello
相关产品推荐
相关产品推荐

