云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_云服务器安全吗_哪个好

小七 141 0

XML模板是微调SAPUI5应用程序外观的强大工具。它可以根据OData服务的元数据定义对代码和布局进行裁剪,从而大大减少代码和布局,并提高HTML页面性能。模板化的主要思想是在创建SAPUI5控制树之前,在运行时对XML定义源进行预处理。有时您可以更改复杂的绑定表达式,每当控件呈现为常量字符串时,这些表达式都会重新计算,或者不用隐藏某些控件,服务器云平台,大数据存储技术,你可以通过模板条件表达式来删除它。

在我最近的项目中的某个时候,问题出现了:我的应用程序的不同部分使用非常相似的弹出对话框,在布局和编码中有相当多的公共部分。通用编码是一个简单的部分:我创建了一个具有通用函数的间歇控制器实现,淘客返利软件,并将其作为祖先,而不是SAP在所有应该使用弹出对话框的终端视图控制器中生成的BaseController。是的,对话框被声明为XML片段。对话框布局的差异可能可以通过将控件的可见属性绑定到某个JSON模型属性来解决,但是,这些不可见的部分无论如何都会出现在SAPUI5控件树和视图DOM中。

使用小布局部分可能没问题。但是,当您使用一个包含大量动态块的非常复杂的对象页面布局时,最好以某种方式减少DOM和控制树,XML模板将是一个很好的工具。

问题是:XML模板应该用于XML视图,而不是片段。是的,如果片段包含在视图中,那么它将与视图定义的其余部分一起作为内联文本进行预处理。但是,我找不到任何关于如何使用带有独立片段的模板的参考资料。

因此,现在是时候深入到SAP代码的调试中,并尝试找出是否可以手动运行XML预处理器。

第一个问题是如何加载XML片段源,这是一个简单的问题(嗯…有点):似乎SAP运行时使用函数加载片段源XMLTemplateProcessor.loadTemplate文件,XMLTemplateProcessor是sap.ui.core图书馆。函数的用法示例XMLTemplateProcessor.loadTemplate文件你可以在sap.ui.core.Fragment模块代码。长话短说,下面的代码实现了这一点:

这里,sFragmentName与您传递给它的名称相同sap.ui.xmlfragment文件"带点符号的函数"foo.view.fragment文件.MyFragment"。这个XMLTemplateProcessor.loadTemplate文件函数首先将片段名称解析为"foo.view.fragment文件.MyFragment.fragment.xml文件". 第二个参数是所谓的扩展名,如果省略它,则片段的名称将解析为"foo.view.fragment文件.MyFragment.view.xml文件". 在进程的下一步中,函数同步加载XML源并返回一个表示DOM结构的对象。

第二部分的研究花费了更长的时间:最后我发现有一个模块sap.ui.core.util.xml预处理器它有一个函数进程,它接受XML源代码(从字符串,或作为DOM层次结构)和预处理参数,它是一个执行预处理返回转换后的XML源的程序?文档指出,您应该使用所谓的元模型作为XML预处理指令的数据源。元模型可以通过调用getMetaModel函数从OData模型对象(V2或V4)获得。元模型是一种工具,用于访问元数据定义和注释,然后使用它们转换源XML。但是,如果我们不使用元模型,而只使用一些JSON模型呢?通常在WebIDE中生成应用程序后,您会使用这些JSON模型,比如ViewSettings。从元模型的源代码来看,普通模型和元模型之间似乎没有区别,这两种模型都不妨碍在XML预处理中使用它们。

因此,要将XML模板应用于XML片段,我们应该首先加载其源代码,然后运行XML预处理器。类似这样的东西:

在上面的代码片段中,oMetaModel可以是任意模型。wordmeta定义了可用于预处理指令的元模型名称。假设在模型的根上下文中有property SomeProperty。在这种情况下,您可以使用if预处理指令中的属性:

正如您在if指令的test属性中所看到的,我们的表达式语法与旧的绑定表达式完全相同。更多关于预处理指令的细节在这里。注:引用一个名为meta的模型的上下文。

为了使编码更舒适一些,我们可以准确地重新定义sap.ui.xmlfragment文件函数,感谢Javascript的自由。为此,淘客放单平台,淘客放单平台,我们需要在重定义所在模块的依赖关系列表中添加3个模块:

重定义函数的好地方应该是代码点,它只在应用程序的最开始执行一次。我选择了SAP生成的App controller的onInit生命周期方法。代码如下:

重新定义后,使用标准XML预处理从片段创建控件的结果代码如下:

享受。

P.S.I使用SAPUI5版本1.52。