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
我的计划是在一个列表项中显示来自一个对象的合并文本:
- 项目 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 将显示在列表项上。
但我不能将其与格式化程序一起使用
在格式化程序中
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);
我有一个 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
我的计划是在一个列表项中显示来自一个对象的合并文本:
- 项目 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 将显示在列表项上。 但我不能将其与格式化程序一起使用
在格式化程序中
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);