问题扩展了扩展另一个控制器的控制器

时间:2018-01-08 17:31:03

标签: javascript sapui5

在我的SAPUI5应用程序中,我有一个扩展另一个控制器(ExcelGenerator)的控制器(Produzione-Stato)。在Component.js文件中,我添加了以下属性:

customizing: {
       "sap.ui.controllerExtensions": {
            "cabot.ui.wt.controller.Produzione-Stato": {
                controllerName: "cabot.ui.wt.controller.ExcelGenerator",
                },
       }
}

此阶段的应用程序运行正常。但是,我希望ExcelGenerator控制器扩展另一个控制器(比如C2ExcelGenerator)。我试图通过添加以下内容来修改Component.js文件:

customizing: {
       "sap.ui.controllerExtensions": {
            "cabot.ui.wt.controller.Produzione-Stato": {
                controllerName: "cabot.ui.wt.controller.ExcelGenerator",
                },
            "cabot.ui.wt.controller.ExcelGenerator": {
                 controllerName: "cabot.ui.wt.controller.C2ExcelGenerator",
                },
       }
}

然而,这会引发异常错误。在多级舞台上扩展控制器或使控制器扩展多个控制器的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

使用带有extend语法的类型控制器,疑问场景如下:

Produzione-Stato.controller.js

sap.ui.define([
    "sap/ui/core/mvc/Controller"
], function(Controller) {
    return Controller.extend("cabot.ui.wt.controller.Produzione-Stato", {
        onInit: function() {}
        ...
    });
});

ExcelGenerator.controller.js

sap.ui.define([
    "cabot/ui/wt/controller/Produzione-Stato"
], function(PSController) {
    return PSController.extend("cabot.ui.wt.controller.ExcelGenerator", {
        onInit: function() {
            PSController.prototype.onInit.apply(this, arguments);
        }
        ...
    });
});

C2ExcelGenerator.controller.js

sap.ui.define([
    "cabot/ui/wt/controller/ExcelGenerator"
], function(EGController) {
    return EGController.extend("cabot.ui.wt.controller.C2ExcelGenerator", {
        onInit: function() {
            EGController.prototype.onInit.apply(this, arguments);
        }
        ...
    });
});
  

生命周期方法的链接不是自动完成的。您   可以自己控制,是否或何时调用父生命周期   方法。此外,您始终可以访问中定义的方法   原控制器。

关于Controller Replacement

中的类型化控制器扩展