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

问题描述 投票:10回答:3

我每次查看页面时都在搜索模式以执行代码(在我的例子中是从服务器上检索数据的检索)(每次页面被splitApp.toDetailsplitApp.backDetail调用时)。我该怎么做?

附: onBeforeRenderingonAfterRendering仅在第一次执行。

sapui5
3个回答
12
投票

有一个解决方案给你。每次触发导航时都会发生一个名为routeMatched的事件。您可以在详细信息页面中附加事件。

 onInit : function () {
    this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
    this._oRouter.attachRouteMatched(this.handleRouteMatched, this);
},

handleRouteMatched : function (evt) {
    //Check whether is the detail page is matched.
    if (evt.getParameter("name") !== "detail") {
        return;
    //You code here to run every time when your detail page is called.
}

7
投票

我在目标视图中使用onBeforeShow

onBeforeShow : function(evt) {
    // gets called everytime the user 
    // navigates to this view
},

这是一个由NavContainer在其导航的情况下对其孩子发射的功能。它记录在NavContainerChild


5
投票

如果使用路由,另一个版本的Allen的代码:

 onInit : function () {
   this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
   this._oRouter.getRoute("detail").attachMatched(this.handleRouteMatched, this);
},

  handleRouteMatched : function (evt) {
    //You code here to run every time when your detail page is called.
  }
© www.soinside.com 2019 - 2024. All rights reserved.