SAPUI5双向绑定:每次导航至应用时如何清除/刷新绑定?
解决方案:自由风格SAPUI5应用返回时重新加载OData绑定
一、通过manifest配置实现(优先方案)
在manifest.json的路由配置中,给应用1、应用2对应的路由添加重置属性,确保每次进入视图时清空绑定状态:
- 在路由数组的对应路由项里,新增
config配置:
"config": { "clearControlAggregation": true, "resetModel": true }
clearControlAggregation会清空视图的控件聚合,resetModel会重置模型的缓存与状态,这样每次进入视图时,双向绑定会重新初始化并从服务器拉取最新的OData数据。
如果是基于组件的路由,也可以在targets对应的视图配置中添加上述属性,确保视图每次激活时重置绑定。
二、控制器中手动触发刷新
若manifest配置无法满足需求,可在视图的路由匹配事件中手动刷新绑定:
- 在控制器
init方法中注册路由匹配监听:
this.getRouter().getRoute("App1Route").attachMatched(this.onRouteMatched, this);
- 实现
onRouteMatched方法强制刷新数据:
onRouteMatched: function() { const oModel = this.getView().getModel(); // 全量刷新模型数据,跳过缓存 oModel.refresh(true); // 也可针对特定控件的绑定单独刷新 // this.getView().byId("targetControl").getBinding("items").refresh(true); }
如果使用OData v4模型,需调整刷新参数:
oModel.refresh({ refreshMode: "Full" });
内容的提问来源于stack exchange,提问作者Adam Harkus
相关产品推荐
相关产品推荐

