如何重用SAPUI5视图?

时间:2013-10-08 08:35:57

标签: sap sapui5

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

  • 将标题放在单独的UI5视图中
  • 使用var pageHeader = sap.ui.jsview(“appHeader”,“view.appHeader”)创建此标头实例;
  • 将pageHeader作为内容添加到customHeader字段中的页面

但是如果没有任何错误,这不起作用! 那么是否可以通过视图重用自定义UI组件,如果是,如何做到这一点?

1 个答案:

答案 0 :(得分:2)

此问题可能与使用sap.ui.jsview

的几个变量有关
  • 查看定义
  • 查看实例化

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

重用视图时应该考虑的另一件事:由于视图有一个名为getControllerName的函数,它返回用于此视图的控制器的名称,框架将为每个视图创建此控制器的新实例你实例化。这不是坏行为,但应该知道以避免问题。

一目了然

查看定义:

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版开始,您还可以使用片段作为重用视图的轻量级替代方法。 documentation有一些很好的例子,并解释了片段的优点以及它们与普通视图的区别。