如何在ui5中绑定<association> oData?

时间:2017-09-29 09:43:52

标签: sapui5

我有一个主 - 详细信息页面,主列表与/ThingSet

绑定
<List items="{ path: '/ThingSet'}">

ThingSetElementSet相关联,我可以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等。而且,这将使表增长失败。

代码:https://stackoverflow.com/a/46638151/5238583

1 个答案:

答案 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可以刷新商品。