誰かがUI5コントロールのデフォルトイベントのライフサイクルについてより詳細な説明を提供できますか?コントロールのライフサイクルの概要を示す ドキュメントのこのページ があることは知っていますが、非常に簡潔で、より詳細な情報が必要でした。誰かがコントロールのイベントの順序をリストし、すべてのイベントが何をするか説明できますか?
あなたは、絶対に正しい。コントロールのライフサイクルの詳細と実装の詳細は、ドキュメントに非常によく隠されています。これまでの理解をまとめてみます。
コントロールのライフサイクルは主に以下によって決定されます:
次に、さまざまなフックの使用例をいくつか示した実装例を示します。
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;
}
});
コンストラクタでinitを行わないのはなぜですか?
ManagedObject には、基本的なUI5コンストラクタがあります。それはあなたのためにあなたのUI5オブジェクトを「準備」し、その後あなたのinit関数を呼び出します。つまり、初期化ではすべての設定が既に適用されており、通常どおりプロパティと集計にアクセスできます。
なぜrerenderを呼び出さないのですか?
SAPUI5レンダリングは、キューに入れられた再レンダリングをグループ化して最適化するという意味でインテリジェントです。したがって、rerender
を直接呼び出さないでください。代わりに、invalidate
を使用して、再レンダリングするコントロールをマークしてください。
HF
クリス
UI5は、Controller実装用に事前定義されたライフサイクルフックを提供します。イベントハンドラーまたは他の関数をコントローラーに追加すると、コントローラーはイベントを発生させることができます。イベントは、他のコントローラーまたはエンティティーが登録できます。
UI5は、次のライフサイクルフックを提供します。
onInit()
:ビューがインスタンス化され、そのコントロール(利用可能な場合)がすでに作成されているときに呼び出されます。イベントハンドラーをバインドして他の1回限りの初期化を行うために表示される前にビューを変更するために使用されます
onExit()
:ビューが破棄されたときに呼び出されます。リソースを解放し、アクティビティを完了するために使用されます
onAfterRendering()
:ビューがレンダリングされ、そのHTMLがドキュメントの一部であるときに呼び出されます。 HTMLのレンダリング後の操作を行うために使用されます。 SAPUI5コントロールは、レンダリング後にこのフックを取得します。
onBeforeRendering()
:ビューがレンダリングされるたびに、レンダラーが呼び出され、HTMLがDOMツリーに配置される前に呼び出されます。