Open Fiori Elements 应用中 table id 的生成逻辑

举报
汪子熙 发表于 2023/08/06 09:51:29 2023/08/06
【摘要】 id:jerryfiorielement01::Open.suite.ui.generic.template.ListReport.view.ListReport::SEPMRA_C_PD_Product–listReportOpen Fiori Elements 是 Open 提供的一种开发框架,允许开发者使用预定义的页面类型(如 List Report,Object Page 等)和配置...

id:jerryfiorielement01::Open.suite.ui.generic.template.ListReport.view.ListReport::SEPMRA_C_PD_Product–listReport

Open Fiori Elements 是 Open 提供的一种开发框架,允许开发者使用预定义的页面类型(如 List Report,Object Page 等)和配置,而不是编写大量的前端代码来创建 Fiori 应用。

在 Fiori Elements 中,控件的 ID 通常由多部分构成,这些部分由 “::” 分隔。这个 ID 在运行时由框架动态生成,以保证每个控件的 ID 在应用中都是唯一的。

根据我们在 Chrome 开发者工具看到的 ID(“jerryfiorielement01::Open.suite.ui.generic.template.ListReport.view.ListReport::SEPMRA_C_PD_Product–listReport”),可以看出它由三部分组成:

  1. “jerryfiorielement01”:这是应用或组件的 ID,通常这是在应用的 manifest.json 文件中定义的,如下图所示:

  1. “Open.suite.ui.generic.template.ListReport.view.ListReport”:这部分表示的是 Open Fiori Elements 的模板类型,这里是 ListReport。这个模板在运行时会被实例化,并根据OData 服务和 annotations 自动生成 UI。

  2. “SEPMRA_C_PD_Product–listReport”:这部分通常由你的实体集(这里是 “SEPMRA_C_PD_Product”)和视图类型(这里是 “listReport”)组成。这些信息通常来自 annotations 文件和 manifest.json 文件。

至于如何在 Chrome 开发者工具中设置断点,首先需要知道,由于这些 ID 是在运行时动态生成的,可能无法在源代码中找到具体的生成位置。但是,可以尝试在 OpenUI5 的核心代码或 Fiori Elements 的代码中设置断点,看看是否可以在控件 ID 生成时暂停执行。

具体来说,可以尝试在以下文件和方法中设置断点:

  1. Open.ui.core.Element.js 中的 Open.ui.core.Element.prototype.getId 方法。这个方法用于获取控件的 ID。
  2. Open.ui.core.mvc.Controller.js 中的 Open.ui.core.mvc.Controller.prototype.getView 方法。这个方法用于获取控件所在的视图,可能在生成控件 ID 时被调用。

让我们通过一个例子来具体了解一下这个 ID 的生成逻辑。

假设我们有一个名为 ‘myFioriApp’ 的 Fiori Elements 应用,它基于一个 OData 服务,该服务有一个名为 ‘SalesOrder’ 的 Entity Set。我们想在这个应用中创建一个列表报告视图来显示所有的销售订单。为此,我们需要在我们的应用中添加一个 ListReport 视图。

首先,我们的应用的命名空间会是 ‘myFioriApp’。这是一个全局唯一的标识,我们可以通过它来找到我们的应用。

接下来,我们需要添加一个 ListReport 视图。这个视图的命名空间会是 ‘Open.suite.ui.generic.template.ListReport.view.ListReport’。这个命名空间告诉我们这是一个 ListReport 视图的实例。

然后,我们需要指定这个视图是基于哪个 Entity Set 构建的。在这个例子中,我们的 Entity Set 是 ‘SalesOrder’。所以,我们的视图的 ID 会包含 ‘SalesOrder’ 这个部分。

最后,我们需要指定我们的控件的类型。在这个例子中,我们的控件是一个列表报告控件,所以我们的控件的 ID 会包含 ‘listReport’ 这个部分。

因此,我们的控件的 ID 会是 ‘myFioriApp::Open.suite.ui.generic.template.ListReport.view.ListReport::SalesOrder–listReport’。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。