Javascript / SAPUI5:将JSONArray绑定到ListItem

问题描述 投票:2回答:2

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

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

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

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

在此尝试中,列表项的正确计数与模型中的对象数相对应。但在列表中只有“对象”

List

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

  • 第1项:“value_a value_b value_c”
  • 第2项:“value_d value_e value_d”
  • ...

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

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将显示在listitems上。但是我无法在格式化程序中使用它

在格式化程序中

formatter : function(data) {

   return data;
}

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

label : "{Model>key1}"
javascript json data-binding sapui5 listitem
2个回答
0
投票

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


0
投票

问题解决了!

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

© www.soinside.com 2019 - 2024. All rights reserved.