我有一个更大的SAPUI5应用程序,有多个页面。 如果用户浏览所有这些页面,它们当然会驻留在内存中。
现在我遇到的问题是,这些页面中的一些页面具有复杂的上下文,其中包含对ODataModel的多个绑定。这导致了对基础ODataModel的.refresh()
调用需要一些时间的问题。
因为:所有已知的绑定都将被重新加载(也来自当前未显示的页面)
现在我正在寻找更好的解决方案来刷新ODataModel。
必须完成刷新,因为有时客户端操作会触发服务器更新多个数据(在不同的模型中!)。
更多信息(编辑)
我在我的应用程序中使用多个ODataModel,它们是在Component.js
中创建的(如SDK文档的最佳实践章节中所建议的)。
浏览页面将增加ODataModel中的缓存数据。
调用.refresh()
似乎重新加载所有缓存的数据(仍然使用或不使用)。
根据第一个回复,可以刷新一个绑定,但如何刷新给定视图/页面与多个模型的所有绑定?
为每个视图设置ODataModel的多个实例是否正确?只需在那里调用.refresh()
方法?但是在这种情况下,本地缓存的数据会随着时间的推移而增加吗?
欢迎任何想法:)
答案 0 :(得分:3)
您可以访问特定UI控件的绑定,并在那里调用刷新。这应该只处理这种特定的绑定。
答案 1 :(得分:0)
我的第一个提示是使用v2 OData模型(sap.ui.model.odata.v2.ODataModel),因为它默认使用批处理模式。
此外,当它执行更新时,它会刷新已自动更新的实体的所有绑定,因此您根本不需要刷新整个模型。
答案 2 :(得分:0)
对我来说,它只是在视图中的特定元素上重新绑定该绑定,就像我之前创建它一样。
在另一个更新调用对相关信息产生副作用之后,我们遇到了更新问题,但是对elemnt本身的绑定进行了刷新并没有解决这个问题。我猜模型中的路径没有本地更改,因此无需刷新。但在服务器端,模型/缓存的更新并不知道。重新绑定使我的一天,并且只有一个必要的电话调用。