我正在为我的应用程序使用FlexColumnLayout。 在中间列中,我需要访问FlexColumnLayout的begin列的控件。这是问题所在:
因为它是一个不同的视图,所以我不能使用
this.getView().byId("myId")
我的第一个解决方案是通过提供views(XML)ID来使用稳定ID。 这样,我可以使用:
sap.ui.getCore().byId("application---viewId--myId")
起初它工作得很好,但是现在我将我的应用程序集成到了fiori启动板中,稳定ID的第一部分(“ viewId”之前的部分)发生了变化,而当我投入生产后,它将再次发生变化。
是否有一种无需sap.ui.getCore()。byId即可访问中间列控件的方法? 还是有一种动态加载第一部分的方法,以便在运输时不需要更改我的ID?
可悲的是,我不知道如何为测试目的而复制启动板,但是对于那些想测试有关我的问题的想法的人,我的FlexColumnLayout的构建就像在DemoApp中一样:https://sapui5.hana.ondemand.com/#/entity/sap.f.FlexibleColumnLayout
感谢您的时间, 埃里克
答案 0 :(得分:0)
好的,我找到了解决方法:
this.getView().getParent().getParent()
返回FlexColumnLayout。它具有一个称为“ getBeginColumnPages”的方法,该方法返回代表begin列的视图数组。现在,我可以访问在其中找到控件的视图,可以使用sap.ui.core.mvc.View.byId()方法访问它。
现在我有
this.getView().getParent().getParent().getMidColumnPages()[0].byId("myId")
由于doulbe .getParent()似乎并不理想,因此,如果您知道一个更好的解决方案,请发表:D
答案 1 :(得分:0)
您必须使用createId()
函数,这将返回控件的完整ID。
this.byId(this.createId("myid"));