每次进入视图时如何调用onInit()?

时间:2017-03-01 09:20:22

标签: javascript sap sapui5 reload

我有两种观点:登录和菜单。

情景:

  

登录 - > onInit() , onBeforeRendering() , onAfterRendering()获得   在Menu.controller.js中调用并转到菜单视图。

     

退出 - > deleteData(); oRouter.navTo("Login", {}, true);回到   登录视图。

     

登录 - > onInit() , onBeforeRendering() , onAfterRendering()   没有被调用并进入菜单视图。

我已尝试将我的菜单控制器附加到onInit中的特定路线,但它无法正常工作:

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

如何再次强行调用上述方法?我需要重新加载onInit()函数中的方法initMenu()才能正确接收菜单。

2 个答案:

答案 0 :(得分:2)

onInit只调用一次。它的生命周期方法是Sapui5。如果你想要一个每次导航时都会被调用的函数,那么使用onAfterRendering或onBeforeRendering。其他明智的创建函数并从路由匹配中调用该函数。

  

以上路线匹配应该是这样的。

this._oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 this._oRouter.attachRouteMatched(this.yurfunction, this);

//现在按以下步骤

yurfunction(){ //now give call to you function from here }

答案 1 :(得分:0)

您可以查看视图的onBeforeShow()方法。每次显示视图时都会调用此生命周期钩子。你可以在这里做你的操作。请参阅:https://openui5.hana.ondemand.com/#docs/api/symbols/sap.m.NavContainerChild.html