如何刷新给定SAPUI5页面的所有(OData)绑定?

时间:2015-06-02 11:24:38

标签: odata sapui5

我有一个更大的SAPUI5应用程序,有多个页面。 如果用户浏览所有这些页面,它们当然会驻留在内存中。

现在我遇到的问题是,这些页面中的一些页面具有复杂的上下文,其中包含对ODataModel的多个绑定。这导致了对基础ODataModel的.refresh()调用需要一些时间的问题。

因为:所有已知的绑定都将被重新加载(也来自当前未显示的页面)

现在我正在寻找更好的解决方案来刷新ODataModel。

必须完成刷新,因为有时客户端操作会触发服务器更新多个数据(在不同的模型中!)。

更多信息(编辑)

我在我的应用程序中使用多个ODataModel,它们是在Component.js中创建的(如SDK文档的最佳实践章节中所建议的)。 浏览页面将增加ODataModel中的缓存数据。 调用.refresh()似乎重新加载所有缓存的数据(仍然使用或不使用)。 根据第一个回复,可以刷新一个绑定,但如何刷新给定视图/页面与多个模型的所有绑定?

为每个视图设置ODataModel的多个实例是否正确?只需在那里调用.refresh()方法?但是在这种情况下,本地缓存的数据会随着时间的推移而增加吗?

欢迎任何想法:)

3 个答案:

答案 0 :(得分:3)

您可以访问特定UI控件的绑定,并在那里调用刷新。这应该只处理这种特定的绑定。

答案 1 :(得分:0)

我的第一个提示是使用v2 OData模型(sap.ui.model.odata.v2.ODataModel),因为它默认使用批处理模式。

此外,当它执行更新时,它会刷新已自动更新的实体的所有绑定,因此您根本不需要刷新整个模型。

答案 2 :(得分:0)

对我来说,它只是在视图中的特定元素上重新绑定该绑定,就像我之前创建它一样。

在另一个更新调用对相关信息产生副作用之后,我们遇到了更新问题,但是对elemnt本身的绑定进行了刷新并没有解决这个问题。我猜模型中的路径没有本地更改,因此无需刷新。但在服务器端,模型/缓存的更新并不知道。重新绑定使我的一天,并且只有一个必要的电话调用。