如何在每次加载时执行控制器方法?

时间:2018-03-15 13:58:45

标签: sapui5

我很难找到一种在加载时在主控制器中执行功能的方法。当第一次加载主控制器时,我可以在onInit内执行该功能。但问题是当用户注销并在主控制器中重新登录时,方法onInit不会再次执行。每次控制器加载时都有办法执行函数吗?

2 个答案:

答案 0 :(得分:2)

以下代码可帮助您实现所需目标

onInit: function() {
  this.getRouter().getRoute("routeName").attachPatternMatched(this._onObjectMatched, this);
}

_onObjectMatched: function() {
  //this function executes every time you navigate to this page
}

Demokit link for detailed information

答案 1 :(得分:0)

“当用户注销并在主控制器中重新登录时”是什么意思?当您的应用第一次加载视图时,它会执行onInit,onBeforeRendering,onAfterRendering和其他生命周期事件。但是如果你没有销毁控制器实例,你就永远不会“退出”它。它作为DOM中的对象保留在那里,并且可以在需要时调用它们的函数。

现在,如果您使用UI5路由器来回导航到其他视图,那么我建议您在路由器中设置“PatternMatched”事件。只要给定的模式匹配,无论是第1次还是第n次,都会触发此事件。

退房: