2016-07-28 37 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

我觉得你的混淆生命周期方法与事件。生命周期方法在控制中定义,控制可以执行或不执行。事件是可以将自己的功能绑定到的钩子。

如果您希望有一个调用事件的面板(您可以附加自己的逻辑),您可以继承面板控件的子类。您可以在元数据和方法中定义一个新事件,然后可以触发该事件。

如果您在用户关闭浏览器时快速执行某些操作很有趣,那么您也可以使用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

相关问题