为什么onBeforeFirstShow有效?

时间:2017-07-03 09:28:27

标签: javascript sapui5

我一直在学习主 - 详细演示,下面是Master.controller.js

中的一个片段
onInit : function() {
    this.getView().addEventDelegate({
        onBeforeFirstShow: function () {
            this.getOwnerComponent().oListSelector.setBoundMasterList(oList);
        }.bind(this)
    });
}

我无法理解该事件代理,因为我还没有看到onBeforeFirstShow事件在任何控件/视图API文档中。

这是用户定义的事件还是预先定义的事件?

我试过了

this.getView().addEventDelegate({
    onBeforeFirstShow: function () {
        console.log("onBeforeFirstShow");
    }.bind(this),
    onAfterRendering: function () {
        console.log("onAfterRendering");
    }.bind(this)
});

似乎它发生在onAfterRendering之前。除了:

  • this.getView().onAfterRendering返回function
  • this.getView().onBeforeFirstShow返回undefined

我搜索了ControllerView的文档,以及sap.ui.core.mvc.Controllersap.ui.core.mvc.View的源代码。只有四种生命周期方法。

1 个答案:

答案 0 :(得分:1)

事件beforeFirstShow可用于视图,因为该视图是NavContainer的直接聚合子项。除此之外,目前还有

  • afterHide
  • afterShow
  • beforeHide
  • beforeShow

当导航发生并显示/隐藏子控件时,这些事件由sap.m.NavContainer在其子控件(在我们的例子中是视图)上触发。