带有上下文的SAPUI5路由显示没有数据

时间:2016-04-25 13:19:52

标签: xml sapui5

使用路由时,我无法将上下文绑定到sap.m.table。在SplitApp中,当我单击主页面行项目时,我使用

导航到详细信息页面和上下文

contextarg = decodeURIComponent(evt.getParameter("arguments").ctx);

现在,我已经使用

将此参数传递给Odata
    var url = "***/sap/opu/odata/SAP/ZFIRST_VENDOR_SRV";
    var olineOdataModel = new sap.ui.model.odata.ODataModel(url,false);
    var rd = contextarg+ "/VENDORITEMSSet";
     olineOdataModel.read(rd,  
              null,  
              null,  
              false,  
              function(oData, oResponse){  

              var oODataJSONModel =  new sap.ui.model.json.JSONModel();                                        
              oODataJSONModel.setData(oData);  
              // store the model  
              var lineTable = sap.ui.getCore().byId("__xmlview5--lineItemTable");                
              lineTable.setModel(oODataJSONModel,"localModel");
              console.log(lineTable.getModel("localModel"));

控制台将输出显示为

enter image description here

我已经用表格

完成了绑定
<Table id="lineItemTable" headerText="Line Items" items="{'/results'}">
        <columns>
            <Column>
                <header>
                    <Label text="Product ID" />
                </header>
            </Column>
            <Column>
                <header>
                    <Label text="Product Name" />
                </header>
            </Column>
            <Column>
                <header>
                    <Label text="Product Price" />
                </header>
            </Column>
            <Column>
                <header>
                    <Label text="Product Weight (gms)" />
                </header>
            </Column>
            <Column>
                <header>
                    <Label text="Available From" />
                </header>
            </Column>
        </columns>
        <ColumnListItem>
            <cells>
                <ObjectIdentifier title="{ProductId}" />
                <ObjectIdentifier title="{ProductName}" />
                <ObjectIdentifier title="{ProductPrc}" />
                <ObjectIdentifier title="{ProductWt}" />
                <ObjectIdentifier title="{AvailableFrom}" />
            </cells>
        </ColumnListItem>
    </Table>

但我在视图上没有数据。我尝试过items="{'results'}"items="{path:'results'}"。请帮助。我在这里犯了什么错误?!

1 个答案:

答案 0 :(得分:1)

将绑定更改为以下内容:

items="{'localModel>/results'}"

如您所见,添加了命名模型的别名。然后还将您正在使用的命名模型的别名添加到模板中:

<ColumnListItem>
    <cells>
        <ObjectIdentifier title="{localModel>ProductId}" />
        <ObjectIdentifier title="{localModel>ProductName}" />
        <ObjectIdentifier title="{localModel>ProductPrc}" />
        <ObjectIdentifier title="{localModel>ProductWt}" />
        <ObjectIdentifier title="{localModel>AvailableFrom}" />
    </cells>
</ColumnListItem>

您可以使用

而不是完成所有这些操作
lineTable.setModel(oODataJSONModel);
console.log(lineTable.getModel());

而不是

lineTable.setModel(oODataJSONModel,"localModel");
console.log(lineTable.getModel("localModel"));

<强>提示: 您正在创建一个ODataModel来执行基本上的AJAX请求。让Component实例化ODataModel将是一个更好的方法,以便在UI5中利用OData + ODataModel的强大功能。 Walkthrough Tutorial是一个很好的起点,可以了解更多...