添加监听器以在添加为聚合时获取通知的事件?

时间:2016-06-24 13:57:39

标签: sapui5

我使用控制器创建了一个xml视图,我使用sap.ui.view()创建了一个控制器,然后将其添加到addDependent()的其他视图的聚合中。在Controller的onInit()函数中,我没有所有者组件(this.getOwnerComponent() === undefined //true),因为我在将其添加为聚合之前进行了初始化。

现在我想添加一个Listener(attachEventOnce),当添加到Aggregation时,做我需要的东西。

是否有“OwnerComponentChanged”事件或类似的事件? 更重要的是:我怎样才能知道哪些事件有哪些以及应该采取哪种事件?

Some.controller.js

var oView = sap.ui.view({viewName : "com.example.app.view.dialog", type : "XML"});
this.getView().addDependent(oView);

dialog.controller.js

(§§§代表搜索到的事件)

onInit : function(){
    if (this.getOwnerComponent()===undefined) //true
    {
        this.attachEventOnce("§§§", BaseController.prototype.doSomething, this );
    }
}

1 个答案:

答案 0 :(得分:1)

据我所知,当视图作为依赖项添加时,不会触发任何事件。

但是,在您的代码中,您正在调用addDependent方法。当你这样做时,你也可以发射你自己的事件,消息或功能。也许解决一个承诺更好?

要找出某个控件可用的事件,您可以查看SDK。他们在那里记录得非常好。具体而言,视图记录为here,可用事件列表记录在段落"事件摘要"中。要完成该列表,您还可以查看哪些事件是从该部分下面的较低级别组件继承的。

当然也可以通过创建自己的View控件版本来扩展事件列表,View控件可能是实际View控件的子类。如果你想要addDependent方法来触发和事件,你应该覆盖你的vesion的addDepdendent方法。在该覆盖中,您可以运行常规addDependent逻辑(使用apply),然后触发自定义事件处理程序。

您可以在sapui5 walkthough的step 34中找到有关如何创建自定义控件的非常好的信息。