SAP UI5 XML Preprocessor 的一个局限性介绍

简介: SAP UI5 XML Preprocessor 的一个局限性介绍

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  }


相关文章
|
1月前
|
数据库 开发者 容器
SAP OData metadata.xml 里 EntityType,EntitySet 和 EntityContainer 三个概念之间的区别和联系
SAP OData metadata.xml 里 EntityType,EntitySet 和 EntityContainer 三个概念之间的区别和联系
24 0
|
2月前
|
XML JavaScript 数据格式
SAP UI5 XML Preprocessor 的工作原理和 instructions 指令详解
SAP UI5 XML Preprocessor 的工作原理和 instructions 指令详解
28 0
|
2月前
|
XML 存储 JSON
SAP UI5 XML Templating Preprocessor 的 template:with 指令使用介绍
SAP UI5 XML Templating Preprocessor 的 template:with 指令使用介绍
20 0
|
2月前
|
XML 存储 JavaScript
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
关于 SAP Fiori Elements List Report 里的 TableCell.fragment.xml 头部声明
22 0
|
18天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
15 1
什么是 SAP ABAP 里的 Subscreen
|
1月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
27 0
|
1月前
|
开发者 UED
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
15 0
|
1月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
15 0
|
1月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
28 0
|
1月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
21 0

相关课程

更多