OData 模型的绑定路径语法

Binding Path Syntax for OData Models

我在这里尝试绑定 Odata 服务以从 SAP ABAP 获取信息。

虽然我使用的是相对绑定路径,但我无法按预期获取信息。

Controller.js

var oListItem= this.getView().byId("BoMSet");   
oListItem.bindElement("invoice>/ProductHeadSet('12345')/ProductHead2BOM");

View.xml

<List id="BoMSet"
      headerText="BoM">
        <items>
            <ObjectListItem intro="{invoice>Material}"
                            title="{invoice>BomNumber}">
            </ObjectListItem>
        </items>

manifest.json

     "dataSources": {
"invoiceRemote": {
            "uri": "http://abc/sap/opu/odata/SAP/xyz/",
            "type": "OData",
            "settings": {
                "odataVersion": "2.0"
}
}

型号

"invoice": {
            "dataSource": "invoiceRemote"

您在 List 上使用了 bindElement,因此您仍然需要指定在 View 上绑定的项目。

我认为您的 ProductHeadSet 中有一个列表,这就是您想在 UI 上显示的内容。

例如,如果 ProductHeadSet 有一个名为 Products 的列表,您的视图将如下所示:

<List
    id="BoMSet"
    headerText="BoM"
    items="{
        path: '/Products'
    }">
        <items>
          <ObjectListItem
             intro="{invoice>Material}"
             title="{invoice>BomNumber}">
           </ObjectListItem>
        </items>
</List>

您也可以采用另一种方法并在您的控制器中调用 bindItems:

var oListItem= this.getView().byId("BoMSet"); 
oListItem.bindItems({
                path : "invoice>/ProductHeadSet('12345')/products", 
                template : new sap.m.StandardListItem({
                    title: "{invoice>BomNumber}",
                    description: "{invoice>Material}"
                })
            }); 

并且您的视图将只包含列表声明:

<List
    id="BoMSet"
    headerText="BoM"
</List>