2016-07-28 1 views
0

여러 가지 이유로 간접적으로 파괴 될 수있는 SAPUI5 패널이 있습니다 (예 :이 예에서는 부모의 부모가 파기 됨). 따라서 컨트롤 자체에서 오는 함수 후크를 사용해야합니다. 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(); 

종료 기능 (this 스택 오버플로 질문 this SAPUI5 문서에 기반)를 호출하려고 "FOOBAR을!" 경고하지만 나는 그것을 얻지 못하고있다.

답변

2

나는 당신의 혼란스러운 라이프 사이클 방법을 이벤트로 생각합니다. 라이프 사이클 메소드는 컨트롤 내에 정의되며 컨트롤은 컨트롤을 구현할 수도 있고 구현하지 않을 수도 있습니다. 이벤트는 자신의 기능을 바인드 할 수있는 후크입니다.

이벤트를 호출하는 패널 (자체 논리를 첨부 할 수 있음)을 원할 경우 패널 컨트롤을 서브 클래스화할 수 있습니다. 메타 데이터와 onExit 메서드에서 새 이벤트를 정의하면 해당 이벤트를 발생시킬 수 있습니다.

사용자가 브라우저를 닫을 때 신속하게 작업을 수행하는 데 흥미가 있다면 window.onbeforeunloadwindow.onunload을 모두 사용할 수 있습니다. 불행히도, 그들은 100 % 브라우저 독립적 인 것이 아니며, 그들이 전혀 호출되지 않을 것이라는 보장은 없습니다.

+0

답변과 라이프 사이클 방법과 이벤트의 명확한 구분에 감사드립니다. "메타 데이터에 새 이벤트를 정의 할 수 있으며 onExit 메서드에서 해당 이벤트를 발생시킬 수 있습니다." 이것은 정확히 제가 고민하는 것입니다, 나는 패널의 파괴시 호출되는 sap.m.Panel에서 exit/onExit 메소드를 찾을 수 없습니다. –

+0

메시지의 핵심은 "패널 컨트롤을 서브 클래스화할 수 있습니다"라는 줄에 있습니다. 일단 하위 클래스가 있으면 "onExit"메소드를 포함하여 그 메소드를 사실상 대체 할 수 있습니다. 하지만 먼저 패널 컨트롤의 고유 한 하위 클래스를 만들어야합니다. 이를 돕기 위해 https://help.sap.com/saphelp_nw75/helpdata/en/d1/2d2ee6a5454d799358d425f9e7c4db/content.htm에서 UI5 연습의 34 단계를 살펴보십시오. – jpenninkhof

관련 문제