我正在尝试重构旧版UI5代码库,并希望使用可重用的对话框。
我的步骤:
HelloDialog.js
添加到项目的./controller/
文件夹HelloDialog.fragment.xml
添加到项目的./view/
文件夹HelloDialog.js
和HelloDialog.fragment.xml
内部的 namespace 从sap.ui.demo.walkthrough.controller.HelloDialog
调整为webapp.controller.HelloDialog
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());
}
exit
和openHelloDialog
事件添加了钩子(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
},