2014-12-26 41 views
1

有什麼方法可以重新加載整個SAPUI5應用程序?在SAPUI5中重新加載應用程序

當一個SAPUI5應用程序被調用時,onInit()函數被調用,我們正在初始化一些設置來查看這裏。假設如果某些更改(如在主視圖中選中複選框)需要重新整個應用程序,我們是否可以重新加載應用程序並再次調用onInit()函數來更正我們的初始設置?是否有任何觸發機制可以通過它明確調用onInit()函數?

非常感謝您的建議。

問候, 拉賈

+1

當你真的要重置你可以看看['location.reload']整個事情(https://developer.mozilla.org/en-US/docs/Web/API/Location .reload) – herrlock

+0

非常感謝。它的工作:) – Raja

+0

隨着數據綁定重新加載不應該是必要的。您可以根據所載入的數據更新您的網頁。格式化程序功能。 –

回答

2

如果您有需要重新加載或重置您的應用程序,那麼我會認爲你的應用程序從一個主要的設計缺陷遭受...這是絕對的東西我會去了解一下先,如果我是你!

但是,要回答您的問題,爲什麼不將初始化代碼移動到其自己的函數中,並從onInit()事件處理函數調用該函數,以及何時需要重置您的應用程序?

+0

謝謝你的建議。在我的應用程序中,當管理員用戶登錄時,他們可以更改其他用戶的設置,當其他用戶頁面加載時,我認爲完全刷新頁面會更好。 – Raja

1

我建議你使用某種互通的(如:EventBus)你的控制器實例之間,從主視圖通知你控制器重新運行初始化邏輯,如下所示:

  1. 初始化邏輯移動您單獨的函數對每個控制器和調用此方法時onInit
  2. onInit訂閱重新初始化事件
  3. 在你掌握視圖添加一個偵聽功能所提到的複選框選擇事件,併發布重新初始化事件,以通知您的控制器重新初始化

Controller.js

function onInit() { 
    this._initialize(); 
    EventBus.subscribe('reinitialize', this._initialize); 
} 
funcion _initialize() { 
    // init logic 
} 

MasterController.js

function onSelectionChange() { 
    EventBus.publish('reinitialize'); 
} 
相關問題