SAPUI5对两个视图使用相同的控制器

SAPUI5对两个视图使用相同的控制器,sapui5,Sapui5,我最近为Fiori Launchpad开发了一个SAPUI5应用程序,并希望将同一个应用程序转换为自由式门户可用且可单独设置样式,因此我需要第二个视图 问题是我的任务是使用相同的逻辑控制器用于两个视图。我尝试过使用路由,但我似乎找不到一个解决方案,这对我很有效,所以我欢迎任何关于如何处理这项任务的建议 我也是SAPUI5的新手,所以我可能忽略了一个简单的解决方案,所以请考虑一下 关于 Mathias请查看sap.ui.core.mvc.controller方法扩展类的SAPUI5 SDK文档 您

我最近为Fiori Launchpad开发了一个SAPUI5应用程序,并希望将同一个应用程序转换为自由式门户可用且可单独设置样式,因此我需要第二个视图

问题是我的任务是使用相同的逻辑<代码>控制器用于两个视图。我尝试过使用路由,但我似乎找不到一个解决方案,这对我很有效,所以我欢迎任何关于如何处理这项任务的建议

我也是SAPUI5的新手,所以我可能忽略了一个简单的解决方案,所以请考虑一下

关于
Mathias

请查看sap.ui.core.mvc.controller方法扩展类的SAPUI5 SDK文档

您可以使用extend方法基于UI5标准sap.ui.core.mvc.controller定义一个类,以创建包含两个视图所需的公共函数的控制器。然后可以使用公共控制器上的extend定义两个控制器。现在您将有两个包含公共函数的控制器,并且可以添加视图特定的函数

请注意,没有创建单独的名称空间

下面是您将创建的结构的概要

公共控制器:BaseController.js

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    ... //Other classes needed
], function (Controller, ..) {
    "use strict";
    return Controller.extend("yourApp.controller.BaseController", {
        someMethod: function () {
            ....
        },
    });
});
sap.ui.define([
    "yourApp/controller/BaseController",
    ... //Other classes needed
], function (myBaseController, ..) {
    "use strict";
    return myBaseController.extend("yourApp.controller.ViewOneController", {
        someMethod2: function () {
            ....
        },
    });
});
一个视图的特定控制器 ViewOneController.js

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    ... //Other classes needed
], function (Controller, ..) {
    "use strict";
    return Controller.extend("yourApp.controller.BaseController", {
        someMethod: function () {
            ....
        },
    });
});
sap.ui.define([
    "yourApp/controller/BaseController",
    ... //Other classes needed
], function (myBaseController, ..) {
    "use strict";
    return myBaseController.extend("yourApp.controller.ViewOneController", {
        someMethod2: function () {
            ....
        },
    });
});

你能发布一些你已经尝试过的代码吗?如果要从一个视图导航到另一个视图,则很难重用同一个控制器,如果不是,则非常简单。谢谢,这正是我要查找的内容,但我无法从文档中阅读,因为它很短。但我遇到的一个问题是,当我首先调用子控制器时,它无法加载基本控制器。我已经按照您的解释对扩展进行了编码,或者是否有额外的步骤首先加载childcontroller?框架应该在需要时负责加载模块。检查文件名是否正确且完全限定。控制台中出现了什么错误?