我每次查看页面时都会搜索模式以执行代码(在我的情况下,检索数据以便从服务器可视化)(每个tipe页面都由splitApp.toDetail或splitApp.backDetail调用).我该怎么做??onBeforeRendering和onAfterRendering仅在第一次执行..
在我的 UI5 应用程序中,我有一个带有表 ( sap.m.Table)的视图,由来自后端onInit挂钩的数据填充。问题是onInit每个视图实例只执行一次:
与
onBeforeRendering和onAfterRendering钩子不同,它每个 View 实例只调用一次。
并且如果用户决定离开该视图(例如,返回导航)并稍后重新打开它,则该视图onInit将不会被调用,因此不会再次检索数据,并且表格内容将不会反映可能的更改。
为确保每次打开视图时都检索数据,我尝试在 处获取数据onBeforeRendering,但此挂钩也仅调用一次。我发现,在onBeforeRendering每次打开视图时强制调用的唯一方法是将以下代码添加到onInit方法中:
onInit: function () {
this.getView().addEventDelegate({
onBeforeShow: this.onBeforeShow,
}, this);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
为什么在没有上面的代码片段的情况下onInit,onBeforeRendering每次显示视图时都不会触发?
上面的代码片段究竟做了什么?
替代技术:使用patternMatched和routeMatched。但是这三种方法中哪一种更常见呢?
sapui5 ×2