我有两个意见:登录和菜单。如何在每次访问视图时调用onInit()?
场景:
登录 - >
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()
才能正确接收菜单。
我已经尝试了两件事,但他们不工作。如果我从路由匹配中调用该函数,它在注销时也会运行。如果我使用onAfterRendering或onBeforeRendering,则不会发生任何事情,因为页面不会重新渲染。 –
那么这只是路由匹配时出现的问题,创建一个全局变量,并且一旦执行函数就将其赋值为真使该全局变量为假。 sap.ui.getCore()。urVariable = true;在onInit中执行此操作。现在,如果(sap.ui.getCore()。urVariable){//你的stuff.sap.ui.getCore()。urVariable = false; }将其设置为false。 –