【发布时间】:2018-03-15 13:58:44
【问题描述】:
我正在努力寻找一种在主控制器加载时执行函数的方法。第一次加载主控制器时,我可以在onInit 中执行该函数。但问题是当用户注销并重新登录主控制器时,方法onInit 不会再次执行。有没有办法在每次控制器加载时执行一个函数?
【问题讨论】:
-
上面链接的问答讨论了
onB(efore|After)Rendering,但同样的解决方案是同样的问题
标签: sapui5
我正在努力寻找一种在主控制器加载时执行函数的方法。第一次加载主控制器时,我可以在onInit 中执行该函数。但问题是当用户注销并重新登录主控制器时,方法onInit 不会再次执行。有没有办法在每次控制器加载时执行一个函数?
【问题讨论】:
onB(efore|After)Rendering,但同样的解决方案是同样的问题
标签: sapui5
以下代码将帮助您实现您的目标
onInit: function() {
this.getRouter().getRoute("routeName").attachPatternMatched(this._onObjectMatched, this);
}
_onObjectMatched: function() {
//this function executes every time you navigate to this page
}
【讨论】:
“当用户注销并重新登录主控制器时”是什么意思?当您的应用第一次加载视图时,它会执行 onInit、onBeforeRendering、onAfterRendering 和其他生命周期事件。但是,如果您不销毁控制器实例,您就永远不会“注销”它。它作为一个对象保留在您的 DOM 中,并且可以在需要时调用它们的函数。
现在,如果您使用 UI5 路由器来回导航到其他视图,那么我建议您在路由器中设置“PatternMatched”事件。只要给定模式匹配,无论是第一次还是第 n 次,都会触发此事件。
退房:
【讨论】: