【问题标题】:How to pass variable from detail to master page SAPUI5如何将变量从详细信息传递到母版页 SAPUI5
【发布时间】:2016-07-26 17:25:35
【问题描述】:

我是 SAPUI5 环境和 JavaScript 的新手。 我使用 Master Detail 模板,因此供应商在主页上显示供应商,在详细信息页面上显示他们生产的产品。我的目标是在母版页上显示每个供应商名称后面的产品数量。 产品和供应商是 2 个实体并且有关联。 我的细节控制器中有一个函数,它计算表格长度并在细节页面上显示变量。 如何在我的母版页中获取此变量?

我尝试使用 OData 操作,但由于 2 个实体之间的依赖关系而无法正常工作。

我尝试使用 Eventbus 来访问从主控制器到详细控制器的计数功能。触发事件时出现问题。

我尝试将我的函数显示为一个对象,但在访问变量时遇到了问题。

有人对我的问题有聪明的解决方案吗? :)

问候 费利克斯

【问题讨论】:

  • 为什么不将计数作为属性添加到供应商实体?

标签: javascript sapui5


【解决方案1】:

完成此任务的最简单方法是让 OData 服务为您完成繁重的工作。您应该向包含产品数量的供应商实体添加一个附加属性。

您上面描述的方法,即将计数从详细信息页面转移到母版页,并没有真正起作用,因为详细信息页面只显示一个供应商的产品。在您的问题中,您表示您希望显示所有供应商的数量。这将要求您在详细信息页面中为列表中的所有供应商运行逻辑。

如果每个供应商的产品数量不是那么高,您还可以考虑使用 /Suppliers?$expand=Products 扩展每个供应商的产品,并添加一些逻辑来在您收到数据时计算每个供应商的产品(例如,使用 @ 987654322@ 运行时设置的事件bindElement)。但是,如果每个供应商有大量产品,这将非常缓慢,因为每个供应商的所有产品都会被检索、下载和计数。

另一种缓慢的方法是为列表中的每个供应商向 OData 服务发起 $count 查询。虽然这对前端造成的压力较小,但这可能会对运行 OData 服务的后端造成更大的压力。

在您的情况下,计数替代方案不太可能是一个可行的选择。所以如果我是你,我会尝试扩展 OData 服务。

【讨论】:

  • 不幸的是,我无法访问 OData 服务,因为它是一个 sap 测试服务。也许我没有正确地提出我的问题:/。当然,我可以用我的详细控制器计算我的产品列表。但后来我在我的详细控制器/视图中有这个变量本地,但我需要在我的主控制器中使用这个变量才能在我的母版页上显示它。
  • 您确实正确地提出了您的问题,并且答案也提到了这一点并解释了为什么您让此流程通过详细信息页面的方法不起作用。它适用于您选择的供应商,因为它会快速为所选供应商进行计算。但是,详细信息页面不会对供应商列表中的所有供应商执行此操作。因此,如果您将从详细信息页面找到的产品数量复制到母版页,您将只能看到一个特定供应商(被选择的那个)的产品数量,而不是所有供应商的产品数量。
  • 我添加了另一种(相对较慢的)方法,为列表中的每个供应商触发 $count 查询。
  • 非常感谢您的帮助!
  • 希望我有更好的消息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2020-03-04
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多