Javascript/SAPUI5:将 JSONArray 绑定到 ListItem

Javascript / SAPUI5 : Binding a JSONArray to a ListItem

我有一个 SAPUI5-App 可以查看来自 DBMS 的数据: DMBS <-> Java <-> jsp -> ajax -> JSON模型 <-> SAPUI5 我对这种结构的模型有疑问:

[
  {
    "key1": "value_a",
    "key2": "value_b",
    "key3": "value_c",
  },
  {
    "key1": "value_d",
    "key2": "value_e",
    "key3": "value_f",
  },
...
]

此数据存储在我的 manifest.json 中定义的模型中。 现在我想在列表中显示这些数据。在我看来,我在 createContent 函数中定义了一个列表并将其添加到我的页面。 在控制器中,我尝试将数据绑定到列表项:

var oItemTemplate = new sap.m.InputListItem({
   label : "{Model>}"
}),
oList.bindItems("Model>/", oItemTemplate);

在这个尝试中,列表项的正确计数对应于我的模型中的对象数。但是在列表中只有 "Objects"

List

我的计划是在一个列表项中显示来自一个对象的合并文本:

现在我为标签使用格式化程序。

label : {
    path : "Model>/",
    formatter : function(data) {

        return data;
    }
}

根据此代码,新列表显示的项目数仍然正确,并且每个项目都包含所有对象

List with formatter

但是我如何访问我的对象数据 key1、key2 和 key3?我所有的尝试都不成功

console.log(data.key1) -> undefined

console.log(data/key1) -> ReferenceError: key1 is not defined

有人能帮帮我吗?

此致

麦克劳德

PS: 如果我使用

var oItemTemplate = new sap.m.InputListItem({
    label : "{Model>key1}"
});
oList.bindItems("Model>/", oItemTemplate);

然后 value_a / value_d 将显示在列表项上。 但我不能将其与格式化程序一起使用

在格式化程序中

formatter : function(data) {

   return data;
}

数据对象包含完整的 JSON 数据。但是没有像使用普通绑定那样的自动迭代

label : "{Model>key1}"

在你的列表图片中,你可以看到,每一行都是一个对象列表。在此对象中,您可以访问键。所以首先,你必须访问对象,比如 data[0]data[1] 等等。我认为您错过了层次结构中的一步。

问题解决了!

var oItemTemplate = new sap.m.InputListItem({
    label : {
    parts : [
        { path : "Model>key1" },
        { path : "Model>key2"}
    ],
    formatter : function(key1, key2) {
        return key1 + " " + key2;
    }
}
oList.bindItems("Model>/", oItemTemplate);

https://archive.sap.com/discussions/thread/3517535