【问题标题】:SAPUI5 - complex model bindingSAPUI5 - 复杂模型绑定
【发布时间】:2013-12-04 16:21:59
【问题描述】:

我有这个 json 模型:

model/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

我不能做的是将每个 order 连接到它的 header->id.. 我试过了

text: "/header/{id}"

text: "{/header/id}"

在项目声明中,以及

list.bindItems("/orders/header", items)

在列表绑定中,但它们都不起作用.. id 值不显示,即使显示了“空白”列表项..

有什么想法吗?我做错了什么?

谢谢

【问题讨论】:

    标签: binding model sapui5


    【解决方案1】:

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

    text: "{/header/id}"
    

    【讨论】:

      【解决方案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 ]
      });
      

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

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

      BR 克里斯

      【讨论】:

        【解决方案3】:

        尚无法添加 cmets,因此您的答案解决了问题,可以回答最初的问题。 (并以任何方式告知人们使用该示例)

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

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

        你好! -nx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 2021-02-05
          • 2016-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多