我每次查看页面时都在搜索模式以执行代码(在我的例子中是从服务器上检索数据的检索)(每次页面被splitApp.toDetail
或splitApp.backDetail
调用时)。我该怎么做?
附: onBeforeRendering
和onAfterRendering
仅在第一次执行。
有一个解决方案给你。每次触发导航时都会发生一个名为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.
}
我在目标视图中使用onBeforeShow
。
onBeforeShow : function(evt) {
// gets called everytime the user
// navigates to this view
},
这是一个由NavContainer在其导航的情况下对其孩子发射的功能。它记录在NavContainerChild。
如果使用路由,另一个版本的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.
}