2016-07-28 7 views
0

さまざまな理由で間接的に破壊されるSAPUI5パネルがあります(この例では、親の親が破壊されます)。したがって、コントロール自体からの関数フックを使用する必要があります。SAPUI5:何かが破壊されたときの関数フック

私は私がしたい終了機能(thisスタックオーバーフローの質問とthis SAPUI5マニュアルのベース)

var oGrandParentPanel = new sap.m.Panel(); 
var oParentPanel = new sap.m.Panel(); 
var oPanel = new sap.m.Panel({ 
    exit: function(){ 
     alert("FOOBAR!"); 
    }}); 

oParentPanel.addContent(oPanel); 
oGrandParentPanel.addContent(oParentPanel); 
oGrandParentPanel.destroy(); 

を呼び出そうとしました "FOOBARを!"警告しますが、私はそれを得ていません。

答えて

2

私はあなたのライフサイクルメソッドをイベントと混同していると思います。ライフサイクルメソッドはコントロール内で定義され、コントロールはそれらを実装することも、実装することもできません。イベントとは、自分の機能をバインドできるフックです。

イベントを呼び出すパネル(独自のロジックをアタッチできるパネル)を使用する場合は、パネルコントロールをサブクラス化できます。新しいイベントをメタデータとonExitメソッドで定義すると、そのイベントを発生させることができます。

ユーザーがブラウザを閉じるときにすばやく何かをするのが面白ければ、使用できるwindow.onbeforeunloadwindow.onunloadの両方があります。残念ながら、彼らは100%ブラウザから独立しているわけではなく、まったく呼び出される保証はありません。

+0

あなたの答えと、ライフサイクルの方法とイベントの明確な区別に感謝します。 "メタデータに新しいイベントを定義することができ、onExitメソッドでイベントを発生させることができます。"これはまさに私が苦労していることです。Panelの破棄時に呼び出されるsap.m.Panelでexit/onExitメソッドを見つけることができません。 –

+0

メッセージのコアは「パネルコントロールをサブクラス化できます」という行にあります。サブクラスを作成したら、 "onExit"メソッドを含むメソッドのいずれかを実質的にオーバーライドすることができます。しかし、パネルコントロールの独自のサブクラスを最初に作成する必要があります。そのためには、https://help.sap.com/saphelp_nw75/helpdata/en/d1/2d2ee6a5454d799358d425f9e7c4db/content.htmのUI5ウォークスルーのステップ34をご覧ください。 – jpenninkhof

関連する問題