2017-02-23 13 views
0

ログインと詳細の2つのビューがあります。onInitを再実行できない

ログインして2番目のビューに移動すると、コンソール:console.log("Hello World")で印刷します。

私はconsole.logをonInit関数に書き込もうとしましたが、ログアウトして再ログインすると、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は、一度の初期化を意図しているため、ビューの存続期間中に一度だけ呼び出されます。ログアウト時には、もちろん、アプリケーションに3つ目のビューを追加して前後にナビゲートすると、再び動作しなくなります。

ベストソリューションは、(仮定の名前は「詳細」です)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を参照してください。

関連する問題