乐趣区

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

本文是笔者这篇教程的具体解释:

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

默认的 async 标记位为 false:

默认的 renderer 名称为 Fiori2:

提取出 renderer 的配置:

只有一个 shell-home 的配置。

谬误音讯从这里报进去的:

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

更改一下 index.html 的配置:

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

而后就进入 async 分支了:

返回的是一个 Promise 对象:

改成这段代码:

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

批改成如下代码后,问题隐没:

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();
退出移动版