我在嵌套视图的onInit
中为beforeShow
event定义了一个处理程序:
this.getView().addEventDelegate({
onBeforeShow: jQuery.proxy(function(oEvent) {
this.onBeforeShow(oEvent);
}, this)
});
然后:
onBeforeShow: function(){
alert("Hello!");
}
但是从不调用此处理程序。
每次显示嵌套视图时,我都需要在嵌套视图的控制器中触发事件。我该怎么做?
答案 0 :(得分:1)
Event handlers, such as onBeforeShow
只能在导航控件(在我们的示例中为嵌套视图)是导航控件的直接子控件时调用,如API Reference中所述:
当导航发生并显示/隐藏子控件时,sap.m.NavContainer在其子控件上触发事件(。)。
这意味着,您必须将嵌套视图包装在NavContainer中并使用它(可能与路由器结合使用)来隐藏和显示视图,以便onBeforeShow
起作用。
以下是一个工作示例:https://embed.plnkr.co/HRSJ44/。如果您打开浏览器控制台,每次嵌入视图即将显示时,您都会看到onBeforeShow
被调用。