如何在另一个视图中获取元素的引用id-UI5

How to get the reference id of an element in another view - UI5

本文关键字:元素 引用 id-UI5 获取 另一个 视图      更新时间:2024-04-16

如何在另一个视图中获取元素的引用id?例如,我有以下文件结构(mvc)

-view
|-- View1.view.xml
|-- View2.view.xml
-controller
|-- View1.controller.js
|-- View2.controller.js

假设在View2.controller.js运行时,我如何获得View1.view.xml中的某个元素?

您可以使用相对导航。不要使用绝对导航,因为如果您从本地html更改为FioriLaunchpad,这将不再有效。

您可能想要查看的命令:

控制器

  • getOwnerComponent()
  • byID

托管对象

  • getAggregation()

现在,您可以导航到OwnerComponent,那里将保存您的目标视图,无论是作为变量还是作为元素的聚合。

假设View1.view.xml中元素的ID为"idOfElement"。您可以使用以下语句在同一应用程序的另一个视图(View2.controller.js)中访问该元素的引用:

                         var elementID = sap.ui.getCore().byId("idOfElement");

例如,我试图在App.view.xml中获取一个id为idAppControl的元素,我想在Master.controller.js 中访问它

这是我的解决方案:

var ownerId = this.getView()._sOwnerId,
rootId = this.getOwnerComponent().getManifestEntry("sap.ui5").rootView.id,
id = "idAppControl",
realId = ownerId + "---" + rootId + "--idAppControl",   
element = sap.ui.getCore().byId(realId);

sOwnerId是私人财产,我没能找到更好的方法来获得它。

我的manifest.json:

"sap.ui5": {
    "rootView": {
        "viewName": "xxx.view.App",
        "type": "XML",
        "id": "app" // what I get in rootId
    },
}