2017-02-23 56 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