我为一个SAP UI5页面创建了一个标题,现在我希望在另一个页面中使用几乎相同组件的类似标题。因此,为了代码重用,我试图:
但是如果没有任何错误,这不起作用! 那么是否可以通过视图重用自定义UI组件,如果是,如何做到这一点?
答案 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有一些很好的例子,并解释了片段的优点以及它们与普通视图的区别。