SAPUI5中另一个应用程序的访问控制器

Access controller of another application in SAPUI5

我在一台 SAP 服务器上有一些 SAPUI5 应用程序。所有应用程序都将部署在 ERP 服务器版本 6.0 中。

所有应用程序在我们的 ERP 服务器中都具有访问权限 url,可以通过 SAP NetWeaver 检索该服务器。所有 url 的格式都是 commonPart/applicationName/index.html。所有这些应用程序都可以通过 Fiori launchpad 应用程序访问。

现在我有一个必须在所有应用程序之间共享的控制器。有什么方法可以不用复制和过去就可以共享这个控制器吗?

提前致谢

您可以制作一个具有您希望两个控制器都具有的所有功能的 BaseController,并将此 js 文件放在 public/shared 文件夹中。然后,您可以从这两个应用程序扩展此控制器。

您可以为 SAP Fiori 应用程序创建可重用的库项目。将您的 BaseController 放入该库中。然后在您的应用程序项目中导入该库,并从 BaseController 扩展您的应用程序控制器。

在基础项目的根文件夹中定义 library.js

sap.ui.define(["jquery.sap.global",
            "sap/ui/core/library"], // library dependency
function(jQuery) {

    "use strict";
    // delegate further initialization of this library to the Core
    sap.ui.getCore().initLibrary({
        name: "mylibrary.reuse",
        version: "1.0",
        dependencies: ["sap.ui.core"],
        types: [],
        interfaces: [],
        controls: [],
        elements: [],
        noLibraryCSS: true
    });

    return mylibrary.reuse;

}, /* bExport= */ true);

在它的 JS 文件中声明 BaseController

 jQuery.sap.declare("mylibrary.reuse.BaseController");
 /** Controller Definition **/

在 neo-app.json

中定义和公开您的库的入口点
 {
   "routes": [{
    "path": "/resources/mylibrary/reuse",
    "target": {
        "type": "application",
        "name": "myreuselibrary",
        "entryPath": "/mylibrary/reuse"
    },
    "description": "SAPUI5 Resources"
},

}

然后在应用工程中导入上面的库,JQuery.require()得到BaseController然后扩展

希望对您有所帮助。

您只需输入以下内容即可

sap.ui.controller([your namespace].[controller folder name].[controller name]).[your method name]([parameters you want to pass])

例如

sap.ui.controller(CafApp.controller.create).onCreate(url);