web-dev-qa-db-ja.com

UI5コントロールのライフサイクルはどのように機能しますか?

誰かがUI5コントロールのデフォルトイベントのライフサイクルについてより詳細な説明を提供できますか?コントロールのライフサイクルの概要を示す ドキュメントのこのページ があることは知っていますが、非常に簡潔で、より詳細な情報が必要でした。誰かがコントロールのイベントの順序をリストし、すべてのイベントが何をするか説明できますか?

9

あなたは、絶対に正しい。コントロールのライフサイクルの詳細と実装の詳細は、ドキュメントに非常によく隠されています。これまでの理解をまとめてみます。

コントロールのライフサイクルは主に以下によって決定されます:

  • 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;
  }

});

コンストラクタでinitを行わないのはなぜですか?

ManagedObject には、基本的なUI5コンストラクタがあります。それはあなたのためにあなたのUI5オブジェクトを「準備」し、その後あなたのinit関数を呼び出します。つまり、初期化ではすべての設定が既に適用されており、通常どおりプロパティと集計にアクセスできます。

なぜrerenderを呼び出さないのですか?

SAPUI5レンダリングは、キューに入れられた再レンダリングをグループ化して最適化するという意味でインテリジェントです。したがって、rerenderを直接呼び出さないでください。代わりに、invalidateを使用して、再レンダリングするコントロールをマークしてください。

HF

クリス

21
cschuff

UI5は、Controller実装用に事前定義されたライフサイクルフックを提供します。イベントハンドラーまたは他の関数をコントローラーに追加すると、コントローラーはイベントを発生させることができます。イベントは、他のコントローラーまたはエンティティーが登録できます。

UI5は、次のライフサイクルフックを提供します。

  • onInit():ビューがインスタンス化され、そのコントロール(利用可能な場合)がすでに作成されているときに呼び出されます。イベントハンドラーをバインドして他の1回限りの初期化を行うために表示される前にビューを変更するために使用されます

  • onExit():ビューが破棄されたときに呼び出されます。リソースを解放し、アクティビティを完了するために使用されます

  • onAfterRendering():ビューがレンダリングされ、そのHTMLがドキュメントの一部であるときに呼び出されます。 HTMLのレンダリング後の操作を行うために使用されます。 SAPUI5コントロールは、レンダリング後にこのフックを取得します。

  • onBeforeRendering():ビューがレンダリングされるたびに、レンダラーが呼び出され、HTMLがDOMツリーに配置される前に呼び出されます。

出典: i5.sap.com/#/topic/121b8e6337d147af9819129e428f1f75

1
ümit duran