2017-02-23 25 views
0

我有两个视图:Login和Detail。重新执行onInit不起作用

当我登录并转到第二个视图时,我想要在控制台中打印:console.log("Hello World")

我试图在onInit函数中写入console.log,但是当我注销并重新登录时,onInit函数不会再次执行。 有谁知道如何使它工作?

我也尝试了下一个代码,但是当我注销时,console.log也执行。

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

function sayHelloWorld(){ 
    console.log("HelloWorld"); 
} 

回答

0

这个按预期工作。方法onInit用于一次性初始化,因此只在视图的生命周期中调用一次。你当然可以在注销时摧毁我们的视图,但是当你向应用程序添加第三个视图时,浏览这个视图将再次失败。

最好的办法是给你详细控制器连接到特定的路线onInit(假设名称为“细节”):

this._oRouter.getRoute("detail").attachMatched(this.sayHelloWorld, this); 

,或者在sayHelloWorld哪一条路线来检查匹配(假设名字“detail”):

sayHelloWorld : function(event) { 
    if (event.getParameter("name") === "detail") { 
     jQuery.sap.log.info("HelloWorld"); 
    } 
} 

关于备注:您发布的代码看起来很奇怪。你确定你正确地实施了控制器吗?有关更多详细信息,请参阅documentation