我每次查看页面时都会搜索模式以执行代码(在我的情况下,检索数据以便从服务器可视化)(每次页面都由splitApp.toDetail
或{{ 1}})。我该怎么办?
P.S。 splitApp.backDetail
和onBeforeRendering
仅在第一次执行。
答案 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.
}