我有UI5的数据看起来像这样:
"results": [
{
"ItemType": "AAA",
"AAA": {
"Name": "Name of AAA"
},
"BBB": null,
"CCC": null
},
{
"ItemType": "BBB",
"BBB": {
"Name": "Name of BBB"
},
"AAA": null,
"CCC": null
},
{
"ItemType": "CCC",
"CCC": {
"Name": "Name of CCC"
},
"AAA": null,
"BBB": null
}]
我想将它们绑定到xml视图元素并获取我所在的任何元素的Name
字段。尽可能接近,我需要做这样的事情:
<Text text="{= ${Data>ItemType} === 'AAA' ?
${Data>AAA/Name} :
${Data>ItemType} === 'BBB' ?
${Data>BBB/Name} :
${Data>ItemType} === 'CCC'?
${Data>CCC/Name} :
'Unknown Type'}
"/>
这很有效,但我觉得有一种更好的方法可以做同样的事情。至少,我必须为每个相似的元素重复这个丑陋的内联。
我试图做这样的事情(以及其中的许多变体):
{= Data>${Data>ItemType}/Name}
显然它没有用。
有更好的方法吗?
答案 0 :(得分:0)
不,没有更好的方法。不支持动态数据绑定。
另一种方法是使用工厂函数进行聚合绑定。这会将大部分丑陋的东西移到控制器上,所以它可能不是更好的解决方案。
然而,您可以在收到数据后立即将模型数据转换为更适合绑定的内容。
答案 1 :(得分:0)
你能使用格式化程序功能吗?这会将代码整理成一个可重用的块。您仍然需要'if'逻辑,但包含在格式化程序中。