model.read之后单个实体的绑定属性

问题描述 投票:0回答:1

我只是遇到一个问题,我不确定该如何解决:

背景:我有一个具有两个视图的应用程序。第一个输入数字,第二个输入详细信息。在视图切换到详细视图之后,我将调用bindElement()从后端获取我的数据。

_onRouteMatched: function(oEvent) {
...

this.getView().bindElement({
                path: "/EntitySet('" + id+ "')"
            });
...
}

问题是ID通常是相同的,但是如果ID与上次调用不同,则该方法仅会调用后端。因此,我尝试使用以下方法解决问题:

this.getView().getModel().read("/EntitySet('" + id+ "')",{
                success: function (oData, response){

                    that.getView().setModel(oData, "");
                },
                error: function (oError){

                }
            });

通过这种方式,数据始终是最新的。但是现在的绑定有些不同。用BindElement绑定:

{
 "id" : "1234"
 "propety1" : "abc"
 ...
}

与setModel和id = 1234绑定:

{`
 "EntitySet('1234')": {
   "id" : "1234"
   "propety1" : "abc"
   ...
 }
}

首先,我的绑定看起来像这样:

<ObjectHeader title="{id}">
</ObjectHeader>

现在,它必须看起来像这样:

<ObjectHeader title="{/EntitySet('1234')/id}">
</ObjectHeader>

并且这里我有一个问题,因为id的值(在这种情况下为1234)将始终不同,因此绑定将无法工作。我无法直接绑定到ObjectHeader,因为稍后我将需要模型中的一些属性。这就是我绑定视图以使所有内容仍然可用的原因。

我的想法是在read方法的成功方法内编辑绑定。我想删除周围的元素。你有一个主意,怎么做?还是解决我的问题的更简单/更好的主意?

编辑:我忘了提到刷新方法。这是可能的,但是我必须放在哪里?我不想两次致电后端。

odata sapui5 sap-fiori
1个回答
0
投票

在绑定上下文之前,只需调用API myODataModel.invalidateEntry(<key>)即可检索最新数据。

© www.soinside.com 2019 - 2024. All rights reserved.