永远不会调用嵌套视图的onBeforeShow

时间:2018-01-04 14:44:49

标签: sapui5

我在嵌套视图的onInit中为beforeShow event定义了一个处理程序:

this.getView().addEventDelegate({
    onBeforeShow: jQuery.proxy(function(oEvent) {
        this.onBeforeShow(oEvent);
    }, this)
});

然后:

onBeforeShow: function(){
    alert("Hello!");
}

但是从不调用此处理程序。

每次显示嵌套视图时,我都需要在嵌套视图的控制器中触发事件。我该怎么做?

1 个答案:

答案 0 :(得分:1)

Event handlers, such as onBeforeShow只能在导航控件(在我们的示例中为嵌套视图)是导航控件的直接子控件时调用,如API Reference中所述:

  

当导航发生并显示/隐藏子控件时,sap.m.NavContainer在其子控件上触发事件(。)。

这意味着,您必须将嵌套视图包装在NavContainer中并使用它(可能与路由器结合使用)来隐藏和显示视图,以便onBeforeShow起作用。

以下是一个工作示例:https://embed.plnkr.co/HRSJ44/。如果您打开浏览器控制台,每次嵌入视图即将显示时,您都会看到onBeforeShow被调用。