使用路由时,我无法将上下文绑定到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"));
控制台将输出显示为
我已经用表格
完成了绑定<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'}"
。请帮助。我在这里犯了什么错误?!
答案 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是一个很好的起点,可以了解更多...