没有fieldname绑定到表中的行

时间:2017-06-06 14:43:14

标签: sapui5

我的SAPUI5应用程序中有一个Json模型,我想将它绑定到一个表。我的表已经包含了列和项:比如3列和3行。

<table>
<columns>
<column></column><column></column><column></column>
</columns>
<items> <ColumnListItem> <cells></cells><cells></cells><cells></cells>
</ColumnListItem>
<ColumnListItem> <cells></cells><cells></cells><cells></cells>
</ColumnListItem>
<ColumnListItem> <cells></cells><cells></cells><cells></cells>
</ColumnListItem>
</items>
</table>

我想在不必指定text =“{/ field}”的情况下进行dinamically绑定,因为我的Json有3个数组,每个数组分别为1行且字段名称不相同。这可能吗?

例如:

var data = {
0: [ {firstname:"AA", lastname: "BB", Phone: "123"}, ],
1: [ {firstnameParent:"AB", lastnameParent: "BC", Phone: "456"},],
2: [ {firstnameGtParent:"ABC", lastnameGtParent: "CC", Phone: "555"},]}

现在我正在为每个细胞放置     文本= “{/ 0 /姓名}” 文本= “{/ 0 /姓氏}” 文本= “{/ 0 /电话}” 和下一行     文本= “{/ 1 / firstnameParent}” 文本= “{/ 1 / lastnameParent}” 文本= “{/ 1 /电话}” 但是这个例子有3个单元格,如果我有更多单元格,那听起来不是一个好主意。

有可能吗?绑定而不指定字段名?我尝试过不同的选择但没有任何成功。

预期的表格输出

col1 | col2 | col3
AA | BB | 123
AB | BC | 456
ABC | CC | 555

1 个答案:

答案 0 :(得分:0)

如果您的数据看起来像您的示例,您可以使用格式化程序

来欺骗它

按以下方式绑定您的行

items="{'/'}"

按照以下方式绑定您的单元格

text="{ path: '', formatter: 'formatFirstname' }"
text="{ path: '', formatter: 'formatLastname' }"
text="{phone}"

并将格式化程序添加到控制器

function formatFirstname(obj) {
    for (let v in obj) {
        if(obj.hasOwnProperty(v) && v.startsWith('firstname')) {
            return obj[v]
        }
    }
}

function formatLastname(obj) {
    for (let v in obj) {
        if(obj.hasOwnProperty(v) && v.startsWith('lastname')) {
            return obj[v]
        }
    }
}

(代码未经测试) 你明白了吗?这应该会给你你想要的结果