有人可以提供關於UI5控件默認事件生命週期的更詳細的解釋嗎?我知道有this page on the documentation,它給出了控制生命週期的概述,但是我認爲它非常簡短,並且想要更詳細的內容。有人可以列出控件事件的順序並解釋每個事件的作用嗎?提前致謝!UI5控件的生命週期如何工作?
4
A
回答
13
你是絕對正確的。控件生命週期和實現細節的細節很好地隱藏在文檔中。我會盡力總結我對你的理解。
- init:
控件的生命週期主要是由確定你的小控制誕生了!函數在構造函數執行期間由框架調用。在這裏做你的初始化東西。
- onBeforeRendering:在控件的呈現開始之前由框架調用。在每次(重新)渲染之前觸發。
- onAfterRendering:在控件呈現完成後由框架調用。每次(重新)呈現後觸發。
- exit:RIP小控制!在銷燬之前清理元素實例。由框架調用。在這裏做你的清理。順便說一句:如果你需要明確地破壞一個控制/元素,你應該調用destroy而不是直接退出。
下面是一個簡單的實現與不同的鉤子的用法示例:
sap.ui.core.Control.extend("a.sample.Control", {
init : function() {
// instantiate a sub-control
this._btn = new sap.m.Button();
},
onBeforeRendering : function() {
// deregister a listener via jQuery
this.$("subelement").off("click", this.subElementClick);
},
onAfterRendering : function() {
// register a listener via jQuery on a sub-element
this.$("subelement").on("click", this.subElementClick);
},
subElementClick : function() {
// do stuff
},
exit : function() {
// clean up sub-controls and local references
this._btn.destroy();
delete this._btn;
}
});
爲什麼不應該我做我的初始化的東西在我的構造函數?
ManagedObject中有一個基本的UI5構造函數。它爲你準備好你的UI5對象,然後調用你的init函數。這意味着在你的init中,所有的設置都已經適用於你,你可以照常訪問屬性和聚合。
爲什麼我不應該叫退縮?
從某種意義上講,SAPUI5渲染非常智能,因爲它可以對排隊的重新排列進行分組和優化。因此,你不應該直接調用rerender
,而應該使用invalidate
來標記控制重新渲染。
HF
克里斯
1
SAPUI5提供預定義的生命週期掛鉤的實現。您可以將事件處理程序或其他功能添加到控制器,並且控制器可以觸發其他控制器或實體可以註冊的事件。
SAPUI5提供了以下的生命週期鉤:
的OnInit():當一個視圖被實例化並調用它的控制(如果可用)已經創建;用於在顯示之前修改視圖以綁定事件處理程序並執行其他一次性初始化操作
onExit():在視圖被銷燬時調用;用於釋放資源並完成活動
onAfterRendering():調用視圖已被渲染時,因此它的HTML是文檔的一部分;用於執行HTML的後處理操作。 SAPUI5控件在呈現後獲取該鉤子。
onBeforeRendering():在控制器視圖重新呈現之前調用,而不是在第一次呈現之前調用;使用onInit()在第一次渲染之前調用掛鉤
相關問題
- 1. 工作流生命週期?
- 2. Silverlight控件生命週期
- 3. 工作流(WF)生命週期事件
- 4. DS組件的生命週期如何工作?
- 5. S3生命週期不工作
- 6. 頁面/控件生命週期
- 7. 生命週期工具套件
- 8. flex itemRenderer如何工作? (他們的生命週期)
- 9. JSF生命週期,如何在生命週期的中期完成響應?
- 10. MXML組件生命週期
- 11. 微件生命週期?
- 12. WCF生命週期事件
- 13. WinForms事件生命週期
- 14. 監控akka流的生命週期
- 15. 視圖控制器生命週期
- 16. 控制器生命週期角度
- 17. ASP.NET MVC控制器生命週期
- 18. Rails控制器生命週期
- 19. ASP.NET MVC控制器廠生命週期
- 20. servlet生命週期
- 21. viewController生命週期
- 22. MarshalByRefObject生命週期
- 23. BroadcastReceiver生命週期
- 24. JSF2.0生命週期
- 25. JVM生命週期?
- 26. System.Timers.Timer生命週期
- 27. X509Certificates生命週期
- 28. PreferenceActivity生命週期
- 29. ScheduledExecutorService生命週期?
- 30. UIControl生命週期
只是爲了區分:問題是關於控制而不是控制器。控件既不提供'onInit'也不提供'onExit'。儘管不是控件,Controller中的生命週期鉤子仍然可以工作,因爲處理程序只是[附加](https://github.com/SAP/openui5/blob/rel-1.48.5/src/sap.ui.core/src /sap/ui/core/mvc/Controller.js#L329)添加到[生命週期事件](https://sapui5.hana.ondemand.com/docs/api/symbols/sap.ui.core.mvc.View。 html#event:afterInit)的相應視圖,這反過來又是一個控件。 – boghyon 2017-08-30 13:03:51