我有这个json模型:
模型/ data.json
{
"orders" : [
{
"header" : { "id" : "00001", "description" : "This is the first order" },
"items" : [
{ "name" : "Red Book","id" : "XXYYZZ" },
{ "name" : "Yellow Book", "id" : "AACCXX" },
{ "name" : "Black Book", "id" : "UUEEAA" },
]
},
{
// another order with header + items
},
.....
]
}
我正在为视图分配onInit
,如下所示:
var model = new sap.ui.model.json.JSONModel("model/data.json");
sap.ui.getCore().setModel(reqModel);
我正在尝试在第一个视图中显示订单列表(显示ID),如下所示:
var list = new sap.m.List({
id: "mainList",
items: []
});
var items = new sap.m.ActionListItem({
text : "{id}",
press : [ //click handler, onclick load the order details page ]
});
list.bindItems("/orders", items);
.... // add list to the page etc etc
我不能做的是将每个订单连接到 header-> id ..我试过了
text: "/header/{id}"
text: "{/header/id}"
项目声明中的和
list.bindItems("/orders/header", items)
列表绑定中的,但它们都不起作用..即使显示“空白”列表项,也不会显示 id 值。
有什么想法吗?我做错了什么?
谢谢
答案 0 :(得分:3)
解决方案是我试过的解决方案之一(但我不知道为什么它当时没有工作)
text: "{/header/id}"
答案 1 :(得分:2)
ListItem充当对象列表/数组的模板。这就是你将它绑定到数据中的数组结构的原因:
list.bindItems("/orders", itemTemplate)
这使得ListItem的绑定相对于/orders
,因此您的项目看起来应该没有前导'/'(绝对路径看起来像/orders/0/header/id
asf。):
var itemTemplate = new sap.m.ActionListItem({
text : "{header/id}",
press : [ //click handler, onclick load the order details page ]
});
不太确定你是如何使它按照你所展示的方式工作的......可能不像我想的那么挑剔。
Btw:无论出于何种原因,ResourceModel
构建了该语法的异常。在处理ResourceModels
时,您总是可以省略前导'/'(可能是因为它们不允许嵌套结构)。
BR 克里斯
答案 2 :(得分:1)
无法添加评论,因此您的答案解决了问题,可以解答最初的问题。 (并以任何方式通知人们使用该示例)
在当前代码清单中,您使用变量“reqModel”来设置模型,但其中带有模型的变量在之前的行中被命名为“model”。也许这就是为什么你的两个考试都不起作用的第一个原因?
在测试时重写某些段落时可能会清除此错误。
问候! -nx