我正在尝试重构旧版UI5代码库,并希望使用可重用的对话框。
我的步骤:

  • 我已经下载了Walkthrough Step 19: Reuse Dialogs示例
  • 我已将HelloDialog.js添加到项目的./controller/文件夹
  • 我已将HelloDialog.fragment.xml添加到项目的./view/文件夹
  • 我已经将HelloDialog.jsHelloDialog.fragment.xml内部的 namespace 从sap.ui.demo.walkthrough.controller.HelloDialog调整为webapp.controller.HelloDialog
  • 我在 View 中添加了HelloDialog的按钮:

  • <Button id = "helloDialogButton"
            icon = "sap-icon://world"
            text = "Show Popup"
            press = ".onOpenDialog" />
    
  • 我已添加到App.controller.js中:

  • onOpenDialog() {
        this.getOwnerComponent().openHelloDialog();
    },
    
  • 我已经在"./controller/HelloDialog"中添加了Component.js并初始化了对象:

  • init(...args) {
        UIComponent.prototype.init.apply(this, args);
        this.getRouter().initialize();
        this._helloDialog = new HelloDialog(this.getRootControl());
    }
    
  • 我为exitopenHelloDialog事件添加了钩子(Hook):

  • exit() {
        this._helloDialog.destroy();
        delete this._helloDialog;
    },
    
    openHelloDialog() {
        this._helloDialog.open();
    },
    
    现在,我运行该项目并获得一个空白页,在DevTools控制台中,我看到以下错误:


    我能发现的唯一区别是我在代码中使用了箭头功能,但是箭头功能会破坏UI5吗?也许,对象上下文存在一些问题。

    最佳答案

    UI5类的构造函数应避免使用箭头功能:

    
    constructor: function() { // e.g. in HelloDialog.js
      // Avoid arrow functions in UI5 class constructors
    },

    10-04 15:58