2

我有这个 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值。

任何的想法?我究竟做错了什么?

谢谢

4

3 回答 3

3

解决方案是我尝试过的解决方案之一(但我不知道为什么当时它不起作用)

text: "{/header/id}"
于 2013-12-05T08:51:44.190 回答
2

ListItem 充当对象列表/数组的模板。这就是为什么将它与数据中的数组结构绑定的原因:

list.bindItems("/orders", itemTemplate)

这使得 ListItem 的绑定相对于/orders,因此您的项目应该看起来像这样,没有前导“/”(绝对路径看起来像这样/orders/0/header/idasf。):

var itemTemplate = new sap.m.ActionListItem({
    text : "{header/id}",
    press : [ //click handler, onclick load the order details page ]
});

不太清楚你是如何让它按照你展示的方式工作的……也许它不像我想象的那么挑剔。

顺便说一句:无论出于何种原因,ResourceModel都会构建该语法的异常。处理时总是可以省略前导的“/” ResourceModels(可能是因为它们不允许嵌套结构)。

克里斯

于 2014-01-23T21:29:59.833 回答
1

还不能添加评论,因此你的答案解决了问题,可以回答最初的问题。(并以任何方式通知人们使用该示例)

在当前代码清单中,您使用变量“reqModel”来设置模型,但其中包含模型的变量在前一行中被命名为“model”。也许这是你的两个考试都不起作用的第一个原因?

也许这个错误在测试时重写一些段落时被清除了。

问候!-nx

于 2016-01-12T12:37:42.827 回答