OData模型的绑定路径语法

时间:2018-11-07 14:09:27

标签: sapui5

我在这里试图绑定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"

1 个答案:

答案 0 :(得分:0)

您在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声明:

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