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

时间:2014-08-05 13:08:01

标签: sapui5

我每次查看页面时都会搜索模式以执行代码(在我的情况下,检索数据以便从服务器可视化)(每次页面都由splitApp.toDetail或{{ 1}})。我该怎么办?

P.S。 splitApp.backDetailonBeforeRendering仅在第一次执行。

3 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:7)

我在目标视图中使用了onBeforeShow

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

这是一个在导航的情况下通过 NavContainer对其子项触发的函数。它记录在NavContainerChild

答案 2 :(得分:5)

如果使用路由,则是艾伦代码的另一版本:

 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.
  }