如何重用SAPUI5视图?

如何重用SAPUI5视图?,sapui5,Sapui5,我为一个SAP UI5页面创建了一个标题,现在我希望在另一个页面中有一个类似的标题,其中包含几乎相同的组件。因此,为了代码重用,我尝试: 将标题放在单独的UI5视图中 使用var pageHeader=sap.ui.jsview(“appHeader”、“view.appHeader”)创建此header实例 将pageHeader作为内容添加到customHeader字段中的页面 但这不起作用,没有给出任何错误! 那么,是否可以通过视图重用自定义UI组件?如果可以,如何实现 这个问题可能与

我为一个SAP UI5页面创建了一个标题,现在我希望在另一个页面中有一个类似的标题,其中包含几乎相同的组件。因此,为了代码重用,我尝试:

  • 将标题放在单独的UI5视图中
  • 使用var pageHeader=sap.ui.jsview(“appHeader”、“view.appHeader”)创建此header实例
  • 将pageHeader作为内容添加到customHeader字段中的页面
但这不起作用,没有给出任何错误!
那么,是否可以通过视图重用自定义UI组件?如果可以,如何实现

这个问题可能与使用
sap.ui.jsview的几个变量有关:

  • 视图定义
  • 视图实例化
调用
var pageHeader=sap.ui.jsview(“appHeader”、“view.appHeader”)
要求框架在项目中查找名为
“view.appHeader”
的视图。如果存在具有此名称的视图,它将创建该视图的新实例,并为其分配ID
“appHeader”
。如果在应用程序的几个模块中使用相同的语句,则每次都会要求框架创建具有相同ID的视图实例。这可能会导致以下错误: 正在添加具有重复id“appHeader”的元素。因此,在重用视图时,避免在实例化中使用ID参数

在重用视图时应该考虑的另外一件事:因为视图有一个函数名为“代码> GigControlReNeord”,它返回用于此视图的控制器的名称,框架将为您实例化的每个视图创建该控制器的新实例。这不是不好的行为,但应该知道,以避免问题

一目了然:

视图定义:

sap.ui.jsview(sId, vView) // (e.g. in pageHeader view file)
视图实例化:

sap.ui.jsview(sName) // (e.g. calling/reusing it in several files) 
在您的情况下:

var pageHeader=sap.ui.jsview(“view.appHeader”)
应该这样做

编辑/附录:


从UI5的1.15版开始,您还可以使用片段作为重用视图的轻量级替代方案。有一些很好的例子,解释了片段的优点以及它们与普通视图的区别。

@DerZyklop:谢谢,修复了它!