SAP UI5 的 XML Template 概念,允许开发人员将 XML 视图作为一个模版使用。
XML Template 的源代码,运行时被 SAP XML Preprocessor 解析,生成 XML Dom. 在这个 DOM 结构的基础上,生成 SAP UI5 控件树。树上的每一个节点,对应生成 SAP UI5 控件实例。
The XML templating concept enables you to use an XML view as a template. This template is transformed by an XML preprocessor on the source level, the XML DOM, at runtime just before an SAPUI5 control tree is created from the XML source.
如果在创建视图时调用 XML 预处理器,则会发生转换(transformation),请参阅调用 XML 预处理器示例中的第 4 行和第 5 行。
可以为该预处理器提供一个或多个模型以及相应的绑定上下文,请参见第 6 行和第 9 行; 任何 SAPUI5 控件的构造函数都存在此概念。
通常,会给出 OData 模型的元模型以及与数据路径对应的元上下文。 XML 模板对元数据进行操作。如果数据发生变化,XML 模板将无法再次执行。这是由于 processing time 造成的。
只有生成的绑定,在数据发生变化时,会重新做一次 evaluation.
如果视图是异步加载的,那么片段和所需的模块也会异步加载。
注意有个限制,XML Template 技术不支持路由。
也就是说,无法声明 XML 预处理器应在路由的目标视图(target view)上运行。
因此,我们只能将类型化的视图(typed view)定义为路由的目标,并使用该视图的 createContent 方法来创建带有模板的 XML 视图。
Target Typed View For Routing 的解决方案如下:
sap.ui.define(["sap/ui/core/mvc/View", "sap/ui/core/mvc/XMLView"], function (View, XMLView) {
return View.extend("some.package.RouteTargetView", {
createContent : function () {
return XMLView.create({
preprocessors : {
xml : {
// ...
}
},
viewName : "some.package.TemplateView"
}).then(function (oView) {
// return View content
return oView;
});
}
});
});
在示例中,sPath = /ProductSet('HT-1021')/ToSupplier
和相应的元上下文指向 /dataServices/schema/0/entityType/0
(实体类型 BusinessPartner)。 生成的视图绑定到 OData 模型内的数据路径,以便显示该产品的供应商。
XML Preprocessor 的显式调用方法:
1 View.create({
2 models : oModel,
3 preprocessors : {
4 xml : {
5 bindingContexts : {
6 meta : oMetaModel.getMetaContext(sPath)
7 },
8 models : {
9 meta : oMetaModel
10 }
11 }
12 },
13 type : ViewType.XML,
14 viewName : "sap.ui.core.sample.ViewTemplate.tiny.Template"
15 }).then(function (oTemplateView) {
16 oTemplateView.bindElement(sPath);
17 ...
18 }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。