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  }


相关文章
|
2月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
2月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
2月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
|
2月前
|
XML 存储 数据格式
SAP UI5 控件 customData 属性的应用介绍
SAP UI5 控件 customData 属性的应用介绍
|
2月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
|
2月前
|
搜索推荐
如何让 SAP UI5 Smart Table 支持多项选择(Multiple-Selection)试读版
如何让 SAP UI5 Smart Table 支持多项选择(Multiple-Selection)试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
使用 SAP UI5 Event Bus 机制,修复 SAP UI5 分页显示数据的一个 bug 试读版
|
2月前
|
Web App开发 前端开发 JavaScript
乱花渐欲迷人眼 - 让 SAP UI5 应用的日志输出不再素面朝天
乱花渐欲迷人眼 - 让 SAP UI5 应用的日志输出不再素面朝天
|
2月前
|
Web App开发 JSON JavaScript
SAP UI5 应用程序小技巧 - 一键将 JSON 对象导出成本地 json 文件
SAP UI5 应用程序小技巧 - 一键将 JSON 对象导出成本地 json 文件
|
2月前
|
存储 安全 测试技术
使用 Visual Studio Code 创建 SAP UI5 项目遇到 self-signed security certificate 相关问题
使用 Visual Studio Code 创建 SAP UI5 项目遇到 self-signed security certificate 相关问题