SAPUI5扩展方法,用构造函数参数创建对象

时间:2018-05-10 13:26:23

标签: typescript sapui5

在使用SAPUI5一​​段时间以使得typescript类作为SAPUI5控制器工作之后,我想到寻求社区的帮助。我试图使用typescript类作为SAPUI5控制器。我有基本的类工作,但如果我想创建一个带有参数的构造函数的类,我的参数总是被设置为undefined,我只是无法弄清楚如何正确地解决它或通过不好的黑客只是破解:)。请查看下面的代码,并建议我可以采取哪些措施来实现这一目标。

sap.ui.define([
    "worklist/controller/BaseController",
    "sap/ui/model/json/JSONModel"
    // Insert your used ui5 elements here to get them loaded
], (Controller: worklist.controller.BaseController, JSONModel: any) => {
    "use strict";
    return Controller.extend("worklist.controller.View1", {
        constructor: function (json: any) {
            Controller.apply(this, JSONModel);
        }
    });
});

namespace worklist.controller {

    export class View1 extends worklist.controller.BaseController {
        constructor(json: any) {
            super();
        }
        onInit(): void {
            console.clear();
            console.info("name initialized");
        }

        onBeforeRendering(): void {
            console.info("name onBeforeRendering");
        }

        onAfterRendering(): void {
            const router = this.getRouter();
            console.info("name onAfterRendering");
        }

        onExit(): void {
            console.info("name onExit");
        }
    }
}

在上面的代码中,您可以看到我的View1构造函数将jsson作为参数。我正在尝试或想要将JSONModel传递给该参数但是有些困难。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

方法" appply"接收第二个参数的数组。所以请按以下方式使用它。

 Controller.apply(this, [JSONModel]);