【问题标题】:Access controller of another application in SAPUI5SAPUI5中另一个应用程序的访问控制器
【发布时间】:2017-02-06 13:10:26
【问题描述】:

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

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

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

提前致谢

【问题讨论】:

    标签: sapui5 sap-fiori


    【解决方案1】:

    您可以为 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,然后扩展它。

    我希望这会有所帮助。

    【讨论】:

    • 您说“在它的 JS 文件中声明 BaseController”it 指的是什么?我们必须在什么范围内定义 BaseController?
    • 如果BaseController和library.js在同一个项目中定义,也不清楚它们之间的关系是什么?
    【解决方案2】:

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

    【讨论】:

    • 我这样做了,但由于浏览器中的交叉引用错误,我无法访问该文件。
    • 只是一种可行的方法,但我不知道必须这样做,可以部署主题并在引导中访问它。这是在这里解释的help.hana.ondemand.com/theme_designer/… 如果我们可以对 js 文件做同样的事情,那就太好了。
    • 如果您将共享文件托管在同一台服务器上,我认为您不必遇到 XSS 错误等。您可能需要域松弛来创建匹配的域/源,因为它们可能略有不同。你得到了什么确切的错误?
    • 问题是我有 js 文件的 http 地址,而网站在 https 下运行,它说您不允许以不安全的方式访问 js 文件。而 SAPUI5 本身以不安全的方式访问它而没有任何错误。
    【解决方案3】:

    您只需输入以下内容

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多