Fiori启动板中的稳定ID

时间:2018-08-07 08:22:15

标签: sapui5 id

我正在为我的应用程序使用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

感谢您的时间, 埃里克

2 个答案:

答案 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"));