[Designer] Update data binding
Related Issue
Fixes #8013
Description
When generating the templating variable from the Bind... button in the designer, we have an edge case for data variables that contain special characters. In this scenario, we typically want to use index syntax and wrap the var in braces.
However, this does not work for arrays. For arrays, we index into the first element by appending [0] to the name. This forces the index syntax incorrectly because the name now includes special characters.
I updated the logic to remove [0] from the end of array type names before checking for special characters.
Sample Card
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"wrap": true,
// Add text property manually in the designer and Bind to `name`
}
],
"data": {
"employees": [
{
"name": "Gabriela Leticia"
},
{
"name": "Natalia Tercera"
},
{
"name": "Waleska Cristobal"
}
]
}
}
How Verified
Verified on the CI site.
Hi Anna, This looks odd:
['employees[0]']
I don't think this is valid syntax to access into an array.
Hi Anna, This looks odd:
['employees[0]']I don't think this is valid syntax to access into an array.
Hey @jwoo-msft! That sample is confusing - sorry! That is the previous behavior that the PR fixes. If you try to use the Bind... feature right now, that is the result. The issue occurs because we use the indexer syntax (wrap in []) if the json key contains special characters. However, for arrays, we asses the key after we add [0] and it is incorrectly wrapped.
If you want to see the new behavior, I can kick off another ci build for this branch.
Hi @anna-dingler ,
[$root.employees[0]] works, but 'employee[0]' is just a string in AEL expression.