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

时间:2017-02-06 13:10:27

标签: sapui5 sap-fiori

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

所有应用程序在我们的ERP服务器中都有一个访问URL,可以通过SAP NetWeaver检索。所有网址都具有格式commonPart/applicationName/index.html。所有这些应用程序都可以通过Fiori启动板应用程序访问。

现在我有一个必须在我的所有应用程序之间共享的控制器。是否有任何方法可以共享此控制器而无需复制和过去?

提前致谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以为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);

在其中声明BaseController的JS文件

 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然后扩展它。

我希望这会有所帮助。

答案 2 :(得分:0)

您只需输入以下内容即可

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);