SAP UI5 manifest.json 里定义的 sap.ui.viewExtensions 区域的解析代码位置

笔者这篇教程介绍了如何在 SAP Fiori Elements 应用的 manifest.json 里注册 Extension fragment,从而给 List Report 应用的 Table 区域新增自定义列

上图 extends 区域注册的 Extension 信息,运行时在 XMLPreprocessor.js 的 Component.getCustomizing 方法里解析出来。

在 SAP UI5 中,sap.ui.viewExtensions 是一个强大的机制,允许开发者在不修改原始视图代码的情况下,扩展或修改现有的视图。使用它,开发者可以添加新的控件,改变已有控件的属性,甚至替换整个视图的一部分。这提供了一种灵活的方式来定制和扩展现有的 SAP UI5 应用,而无需担心影响到原有的业务逻辑或者 UI 结构。

sap.ui.viewExtensions 的使用主要分为两部分:定义扩展点和实现扩展。

  1. 定义扩展点

    在原始视图中,开发者可以定义一个或多个扩展点。扩展点是一个特殊的占位符控件,表示可以插入新的 UI 元素的位置。下面是一个简单的示例:

    <mvc:View controllerName="sap.ui.demo.controller.View1" 
              xmlns:mvc="sap.ui.core.mvc" 
              xmlns="sap.m" 
              xmlns:core="sap.ui.core">
        <Page title="Title">
            <content>
                <core:ExtensionPoint name="ExtensionPointExample" />
            </content>
        </Page>
    </mvc:View>
    

    在这个示例中,core:ExtensionPoint 定义了一个名为 ExtensionPointExample 的扩展点。

  2. 实现扩展

    扫描二维码关注公众号,回复: 16102634 查看本文章

    一旦定义了扩展点,开发者就可以在另一个视图中实现扩展,通过 sap.ui.viewExtensions 来添加新的 UI 元素。这个过程通常在 manifest.json 文件中进行,如下所示:

    {
          
          
        "sap.ui5": {
          
          
            "extends": {
          
          
                "extensions": {
          
          
                    "sap.ui.viewExtensions": {
          
          
                        "sap.ui.demo.controller.View1": {
          
          
                            "ExtensionPointExample": {
          
          
                                "className": "sap.ui.core.Fragment",
                                "fragmentName": "sap.ui.demo.fragments.MyFragment",
                                "type": "XML"
                            }
                        }
                    }
                }
            }
        }
    }
    

在这个示例中,我们对 View1ExtensionPointExample 扩展点进行了扩展,插入了一个名为 sap.ui.demo.fragments.MyFragment 的 Fragment。这个 Fragment 会在运行时替代扩展点在 UI 中的位置。

这样,即使在 SAP 更新或修改原始视图时,扩展的部分也不会受到影响,因为它们是在一个独立的文件中定义的,而不是直接修改原始代码。这使得应用程序更易于维护和升级。

猜你喜欢

转载自blog.csdn.net/i042416/article/details/132150666