2017-03-01 11 views
-1

ログインとメニューの2つのビューがあります。ビューに移動するたびに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()をリロードする必要があります。

答えて

2

onInitは1回のみと呼ばれます。 Sapui5のライフサイクルメソッド。ナビゲートするたびに呼び出される関数が必要な場合は、onAfterRenderingまたはonBeforeRenderingを使用します。他の賢明な関数を作成し、その機能をルートマッチから呼び出します。

上記のルートマッチングは、このようにする必要があります。今

this._oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
this._oRouter.attachRouteMatched(this.yurfunction, this); 

//ビューのonBeforeShow()メソッドの中に見ることができ

yurfunction(){ //now give call to you function from here } 
+0

私は両方のものを試しましたが、動作しません。私がルートマッチからその関数を呼び出すと、ログアウト時にも実行されます。 onAfterRenderingまたはonBeforeRenderingを使用すると、ページが再レンダリングされないため何も起こりません。 –

+0

ルートマッチの問題だけが、グローバル変数を1つ作成し、関数が実行されるとそのグローバル変数を偽にするようにします。 sap.ui.getCore()。urVariable = true; onInitでこれを行います。今すぐif(sap.ui.getCore()。urVariable){//あなたstuff.sap.ui.getCore()。urVariable = false; }これをfalseに設定します。 –

関連する問題