UI5:动态绑定数据

时间:2016-10-28 23:10:05

标签: sapui5

我有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&gt;ItemType} === 'AAA' ? 
    ${Data&gt;AAA/Name} :  
    ${Data&gt;ItemType} === 'BBB' ?
        ${Data&gt;BBB/Name} :
        ${Data&gt;ItemType} === 'CCC'?
            ${Data&gt;CCC/Name} :
            'Unknown Type'}
    "/>

这很有效,但我觉得有一种更好的方法可以做同样的事情。至少,我必须为每个相似的元素重复这个丑陋的内联。

我试图做这样的事情(以及其中的许多变体):

{= Data&gt;${Data&gt;ItemType}/Name}

显然它没有用。

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

不,没有更好的方法。不支持动态数据绑定。

另一种方法是使用工厂函数进行聚合绑定。这会将大部分丑陋的东西移到控制器上,所以它可能不是更好的解决方案。

然而,您可以在收到数据后立即将模型数据转换为更适合绑定的内容。

答案 1 :(得分:0)

你能使用格式化程序功能吗?这会将代码整理成一个可重用的块。您仍然需要'if'逻辑,但包含在格式化程序中。