首页 > 其他分享 >关于 SAP UI5 应用 render2 实例异步创建的编码实现

关于 SAP UI5 应用 render2 实例异步创建的编码实现

时间:2023-03-25 10:37:41浏览次数:62  
标签:sap 创建 Object here ui render2 UI5 SAP


本文是笔者这篇教程的详细解释:

  • SAP UI5 应用开发教程之五十四 - 如何将本地 SAP UI5 应用配置到本地 Fiori Launchpad 中

关于 SAP UI5 应用 render2 实例异步创建的编码实现_对象类型

默认的 async 标志位为 false:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_子类_02

默认的 renderer 名称为 Fiori2:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_子类_03

提取出 renderer 的配置:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_子类_04

只有一个 shell-home 的配置。

关于 SAP UI5 应用 render2 实例异步创建的编码实现_对象类型_05

错误消息从这里报出来的:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_子类_06

Log.error("sap.ushell.Container.createRenderer() should always be called with bAsync:true.");
            return getRendererInstance(sModule);

关于 SAP UI5 应用 render2 实例异步创建的编码实现_对象类型_07

更改一下 index.html 的配置:

sap.ui.getCore().attachInit(() => sap.ushell.Container.createRenderer("fiori2", true).placeAt("content"))

然后就进入 async 分支了:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_SAP_08

返回的是一个 Promise 对象:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_对象类型_09

改成这段代码:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_SAP_10

果不其然,Promise resolve 之后,回调函数里返回的是一个 renderer 实例:

关于 SAP UI5 应用 render2 实例异步创建的编码实现_子类_11

关于 SAP UI5 应用 render2 实例异步创建的编码实现_SAP_12

修改成如下代码后,问题消失:

sap.ui.getCore().attachInit(() => sap.ushell.Container.createRenderer("fiori2", true).then(
			(oRenderer) => {
				oRenderer.placeAt("content");
			}
		));

sap.ui.base.Object.extend是SAP UI5中的一种继承方式,用于创建一个新的对象类型,并基于现有对象类型创建子类型。它允许在创建自定义对象时继承现有对象的属性和方法,并扩展它们以满足特定需求。

使用sap.ui.base.Object.extend可以创建自定义对象类,这些类可以在SAP UI5应用程序中用作模型、控制器、视图等组件。这种方式还允许开发人员通过将属性和方法添加到新对象类中来扩展现有类,从而满足特定的需求。这样做可以避免在创建新类时重复编写相同的代码,从而提高代码的可重用性和可维护性。

使用sap.ui.base.Object.extend的基本语法如下:

var MyObject = sap.ui.base.Object.extend("my.namespace.MyObject", {
    metadata : {
        properties : {
            // define properties here
        },
        events : {
            // define events here
        },
        methods : {
            // define methods here
        }
    },

    constructor : function() {
        // define constructor here
    },

    // define additional methods here
});

上述代码创建了一个名为my.namespace.MyObject的新对象类型,并基于sap.ui.base.Object类创建了一个子类型。新类型可以在metadata属性中定义属性、事件和方法,并可以在constructor函数中初始化对象。创建新对象类型后,可以使用以下语法创建对象实例:

var myObject = new my.namespace.MyObject();




标签:sap,创建,Object,here,ui,render2,UI5,SAP
From: https://blog.51cto.com/jerrywangsap/6148900

相关文章