我有一个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);
在此尝试中,列表项的正确计数与模型中的对象数相对应。但在列表中只有“对象”
我的计划是在一个listitem中显示来自一个对象的合并文本:
现在我使用格式化程序作为标签。
label : {
path : "Model>/",
formatter : function(data) {
return data;
}
}
根据此代码新显示的列表仍然是正确的项目数,每个项目包含所有项目
但我如何访问我的对象数据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}"
在列表的图片中,您可以看到每一行都是一个对象列表。在此对象中,您可以访问键。所以在第一个,你必须访问对象,如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);