首页 文章

Javascript / SAPUI5:将JSONArray绑定到ListItem

提问于
浏览
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}"

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

相关问题