我有一个主 - 详细信息页面,主列表与/ThingSet
<List items="{ path: '/ThingSet'}">
ThingSet
与ElementSet
相关联,我可以ElementSet
分配entity.svc/ThingSet('7d46be8a9348')/assignedElements
,7d46be8a9348是一件事的ID。
所以我的问题是如何在详细页面中将assigndElements绑定到sap.m.Table?
<Table items="{ path: '/ElementSet'}">
我试过了:
1
var oAssignModel = new sap.ui.model.odata.v2.ODataModel("destination/..../entity.svc/ThingSet('7d46be8a9348')/assignedElements");
oAssignTable.setModel(oAssignModel);
GET destination/..../entity.svc/ThingSet('7d46be8a9348')/assignedElements/$metadata
2
oAssignTable.bindElement({
path : sAssignedPath,
model : this._oModel
});
(我可以看到以这种方式加载的数据)
不工作。
3
使用JSON模型数据绑定,但这会导致空的GET请求。而JSON模型数据绑定使得很难获得bindingElement等。而且,这将使表增长失败。
答案 0 :(得分:0)
解决方案
_bindView : function (sObjectPath) {
var oTableView = this.getView().byId("tableView"),
oAssignTable = oTableView.byId("assignTable"),
oItemTemplate = oTableView.byId("cli").clone(),
sAssignedPath = sObjectPath + "/assignedElements";
oAssignTable.bindAggregation("items", {
path: sAssignedPath,
template: oItemTemplate
});
}
这将触发GET请求。
我发现在this._oModel.read()成功之后,oModel中的oData已经刷新并且加载了新的Elements。但是表中的数据仍未加载。
感谢https://archive.sap.com/discussions/thread/3740994,我发现bindAggregation
可以刷新商品。