我使用控制器创建了一个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 );
}
}
答案 0 :(得分:1)
据我所知,当视图作为依赖项添加时,不会触发任何事件。
但是,在您的代码中,您正在调用addDependent方法。当你这样做时,你也可以发射你自己的事件,消息或功能。也许解决一个承诺更好?
要找出某个控件可用的事件,您可以查看SDK。他们在那里记录得非常好。具体而言,视图记录为here,可用事件列表记录在段落"事件摘要"中。要完成该列表,您还可以查看哪些事件是从该部分下面的较低级别组件继承的。
当然也可以通过创建自己的View控件版本来扩展事件列表,View控件可能是实际View控件的子类。如果你想要addDependent方法来触发和事件,你应该覆盖你的vesion的addDepdendent方法。在该覆盖中,您可以运行常规addDependent逻辑(使用apply),然后触发自定义事件处理程序。
您可以在sapui5 walkthough的step 34中找到有关如何创建自定义控件的非常好的信息。