相关疑难解决方法(0)

每次查看页面时如何执行代码

我每次查看页面时都会搜索模式以执行代码(在我的情况下,检索数据以便从服务器可视化)(每个tipe页面都由splitApp.toDetail或splitApp.backDetail调用).我该怎么做??onBeforeRendering和onAfterRendering仅在第一次执行..

sapui5

11
推荐指数
3
解决办法
1万
查看次数

每次打开视图时都不会调用“onBeforeRendering”或“onAfterRendering”

在我的 UI5 应用程序中,我有一个带有表 ( sap.m.Table)的视图,由来自后端onInit挂钩的数据填充。问题是onInit每个视图实例只执行一次:

onBeforeRenderingonAfterRendering钩子不同,它每个 View 实例只调用一次。

并且如果用户决定离开该视图(例如,返回导航)并稍后重新打开它,则该视图onInit将不会被调用,因此不会再次检索数据,并且表格内容将不会反映可能的更改。

为确保每次打开视图时都检索数据,我尝试在 处获取数据onBeforeRendering,但此挂钩也仅调用一次。我发现,在onBeforeRendering每次打开视图时强制调用的唯一方法是将以下代码添加到onInit方法中:

onInit: function () {
  this.getView().addEventDelegate({
    onBeforeShow: this.onBeforeShow,
  }, this);
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么在没有上面的代码片段的情况下onInitonBeforeRendering每次显示视图时都不会触发?

  2. 上面的代码片段究竟做了什么?

  3. 替代技术:使用patternMatchedrouteMatched。但是这三种方法中哪一种更常见呢?

sapui5

5
推荐指数
1
解决办法
3778
查看次数

标签 统计

sapui5 ×2